1、搭建项目,使用idea的Spring Initializr创建一个初始的springboot+gradle项目,springboot是2.3.12.RELEASE
2、创建完成后的gradle
plugins {
id 'org.springframework.boot' version '2.3.12.RELEASE'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.kk'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
//改成web项目
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
tasks.named('test') {
useJUnitPlatform()
}
3、问题
初始的springboot+gradle的项目完成,引入lombok插件
plugins {
id 'org.springframework.boot' version '2.3.12.RELEASE'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.kk'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
// swagger
// implementation 'io.springfox:springfox-swagger2:3.0.0'
// swagger ui
// implementation 'io.springfox:springfox-swagger-ui:3.0.0'
// implementation 'io.springfox:springfox-boot-starter:3.0.0'
//swagger-bootstrap-ui
// implementation 'com.github.xiaoymin:swagger-bootstrap-ui:1.9.6'
//
// knife4j-spring-boot-starter
// implementation 'com.github.xiaoymin:knife4j-spring-boot-starter:3.0.3'
implementation 'com.github.xiaoymin:knife4j-openapi2-spring-boot-starter:4.5.0'
compileOnly 'org.projectlombok:lombok'
implementation 'mysql:mysql-connector-java:8.0.33'
implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.7'
}
tasks.named('test') {
useJUnitPlatform()
}
创建一个R类
@Data
public class R {
private Integer code;
private String message;
private Map<String,Object> data=new HashMap<>();
public static R ok() {
R r = new R();
r.setCode(0);
r.setMessage("成功");
return r;
}
public static R error() {
R r = new R();
r.setCode(-1);
r.setMessage("失败");
return r;
}
public R data(String key, Object value) {
this.data.put(key, value);
return this;
}
}
不编译代码,一切正常,编译时出现了问题,如下图:
出现一堆乱码,指向类里面的set方法,不知所云。去掉set,项目能正常启动,然而在执行到有R的类返回时,会出现转换错误。纳闷。起初以为编译缓存问题,清理gradle,重启,还是这个鸟样。
经过一番查证,怀疑是lombok注解出现了 编译问题,去掉,自己去实现getter 和setter方法,完美启动。果然是lombok的问题。
又经过一番查找,说需要引入annotationProcessor ‘org.projectlombok:lombok’,果然问题解决。网上说“高版本号的gradle需要配置annotationProcessor ‘org.projectlombok:lombok:1.18.4’ ”。
plugins {
id 'org.springframework.boot' version '2.3.12.RELEASE'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.kk'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
// swagger
// implementation 'io.springfox:springfox-swagger2:3.0.0'
// swagger ui
// implementation 'io.springfox:springfox-swagger-ui:3.0.0'
// implementation 'io.springfox:springfox-boot-starter:3.0.0'
//swagger-bootstrap-ui
// implementation 'com.github.xiaoymin:swagger-bootstrap-ui:1.9.6'
//
// knife4j-spring-boot-starter
// implementation 'com.github.xiaoymin:knife4j-spring-boot-starter:3.0.3'
implementation 'com.github.xiaoymin:knife4j-openapi2-spring-boot-starter:4.5.0'
compileOnly 'org.projectlombok:lombok'
**annotationProcessor 'org.projectlombok:lombok'**
implementation 'mysql:mysql-connector-java:8.0.33'
implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.7'
}
tasks.named('test') {
useJUnitPlatform()
}