Gradle 在带注释的 Lombok 上构建失败 类
Gradle build fails on Lombok annotated classes
我有一个 JHipster 项目,我在 build.gradle 中添加了对 Lombok 的依赖:
compile group: 'org.projectlombok', name: 'lombok', version: lombok_version
我为 IntelliJ 设置了 Lombok 插件。我已经在 IntelliJ 中打开注释处理,我可以从 IntelliJ IDE 中构建而不会出现错误,但是当我尝试从命令行构建时,我会遇到构建错误。似乎 Gradle 没有处理注释并且找不到 getter/setter 和日志声明。该项目也运行无任何错误。
命令行:
./gradlew build
错误:
/Users/.../source/v4.0/src/main/java/com/.../service/MyService.java:145: error: cannot find symbol
log.info("Security Context: " + SecurityUtils.getCurrentUserLogin());
^
symbol: variable log
location: class MyService
错误:
/Users/.../source/v4.0/src/main/java/com/.../service/MyService.java:105: error: cannot find symbol
myClass.setDescription(description);
^
symbol: method setDescription(String)
location: variable myClass of type MyClass
服务Class:
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MyService {
public void someMethod(){
log.debug("Security Context: " + SecurityUtils.getCurrentUserLogin());
MyClass myCLass = new MyClass();
myClass.setDescription(description);
}
}
实体Class:
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name="t_juror_file_update")
@Getter
@Setter
@NoArgsConstructor
public class MyClass {
private String description;
}
几个小时以来,我一直在努力解决这个问题,但完全卡住了。任何帮助将不胜感激。
您需要将 lombok
指定为注释处理器。为此,您需要将以下内容添加到 Jhipster
项目中的 build.gradle
。
apply plugin: 'net.ltgt.apt'
dependencies {
provided "org.projectlombok:lombok:$lombokVersion"
apt "org.projectlombok:lombok:$lombokVersion"
/** ... */
}
Jhipster
使用 net.ltgt.gradle:gradle-apt-plugin
进行注释处理。
对于 IntelliJ
设置,应检查 Enable annotation Processing
。
我遇到了同样的问题并且在添加到 build.gradle 时为我工作:
dependencies{
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
}
我面临同样的问题,因为 ./gradlew clean build 工作正常但是当我尝试做 gradle clean build 时 getter 和 setter 方法,假设由 lombok 生成,但在 gradle build 时未找到。
因为它抛出构建失败的编译异常
早些时候我使用的是 grapper wrapper 3.4.1 版和 gradle 5.6.2 版。
所以我可以通过将我的 gradle 版本降级到 4.10.0 来解决这个问题
我的 gradle 包装器版本保持不变,即 3.4.1
这是gradle版本
Gradle 4.10
构建时间:2018-08-27 18:35:06 UTC
修订:ee3751ed9f2034effc1f0072c2b2ee74b5dce67d
科特林 DSL:1.0-rc-3
科特林:1.2.60
Groovy:2.4.15
Ant:2018 年 3 月 23 日编译的 Apache Ant(TM) 版本 1.9.11
JVM:1.8.0_191(甲骨文公司 25.191-b12)
OS: Mac OS X 10.14.6 x86_64
这是 gradle 封装版本
Gradle 3.4.1
构建时间:2017-03-03 19:45:41 UTC
修订:9eb76efdd3d034dc506c719dac2955efb5ff9a93
Groovy:2.4.7
Ant:2015 年 6 月 29 日编译的 Apache Ant(TM) 版本 1.9.6
JVM:1.8.0_191(甲骨文公司 25.191-b12)
OS: Mac OS X 10.14.6 x86_64
这对我有用
对于新用户,请考虑使用 gradle 插件:
plugins {
id "io.freefair.lombok" version "5.3.3.3"
}
那么你不需要compileOnly
或annotationProcessor
我使用 MacBook 和 Gradle 7.1.1。在 build.gradle 文件中,我在没有插件的情况下添加了以下内容,然后它可以成功构建。
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
testCompileOnly 'org.projectlombok:lombok:1.18.20'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
}
我有一个 JHipster 项目,我在 build.gradle 中添加了对 Lombok 的依赖:
compile group: 'org.projectlombok', name: 'lombok', version: lombok_version
我为 IntelliJ 设置了 Lombok 插件。我已经在 IntelliJ 中打开注释处理,我可以从 IntelliJ IDE 中构建而不会出现错误,但是当我尝试从命令行构建时,我会遇到构建错误。似乎 Gradle 没有处理注释并且找不到 getter/setter 和日志声明。该项目也运行无任何错误。
命令行:
./gradlew build
错误:
/Users/.../source/v4.0/src/main/java/com/.../service/MyService.java:145: error: cannot find symbol
log.info("Security Context: " + SecurityUtils.getCurrentUserLogin());
^
symbol: variable log
location: class MyService
错误:
/Users/.../source/v4.0/src/main/java/com/.../service/MyService.java:105: error: cannot find symbol
myClass.setDescription(description);
^
symbol: method setDescription(String)
location: variable myClass of type MyClass
服务Class:
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MyService {
public void someMethod(){
log.debug("Security Context: " + SecurityUtils.getCurrentUserLogin());
MyClass myCLass = new MyClass();
myClass.setDescription(description);
}
}
实体Class:
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name="t_juror_file_update")
@Getter
@Setter
@NoArgsConstructor
public class MyClass {
private String description;
}
几个小时以来,我一直在努力解决这个问题,但完全卡住了。任何帮助将不胜感激。
您需要将 lombok
指定为注释处理器。为此,您需要将以下内容添加到 Jhipster
项目中的 build.gradle
。
apply plugin: 'net.ltgt.apt'
dependencies {
provided "org.projectlombok:lombok:$lombokVersion"
apt "org.projectlombok:lombok:$lombokVersion"
/** ... */
}
Jhipster
使用 net.ltgt.gradle:gradle-apt-plugin
进行注释处理。
对于 IntelliJ
设置,应检查 Enable annotation Processing
。
我遇到了同样的问题并且在添加到 build.gradle 时为我工作:
dependencies{
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
}
我面临同样的问题,因为 ./gradlew clean build 工作正常但是当我尝试做 gradle clean build 时 getter 和 setter 方法,假设由 lombok 生成,但在 gradle build 时未找到。 因为它抛出构建失败的编译异常
早些时候我使用的是 grapper wrapper 3.4.1 版和 gradle 5.6.2 版。 所以我可以通过将我的 gradle 版本降级到 4.10.0 来解决这个问题 我的 gradle 包装器版本保持不变,即 3.4.1
这是gradle版本
Gradle 4.10
构建时间:2018-08-27 18:35:06 UTC 修订:ee3751ed9f2034effc1f0072c2b2ee74b5dce67d
科特林 DSL:1.0-rc-3 科特林:1.2.60 Groovy:2.4.15 Ant:2018 年 3 月 23 日编译的 Apache Ant(TM) 版本 1.9.11 JVM:1.8.0_191(甲骨文公司 25.191-b12) OS: Mac OS X 10.14.6 x86_64
这是 gradle 封装版本
Gradle 3.4.1
构建时间:2017-03-03 19:45:41 UTC 修订:9eb76efdd3d034dc506c719dac2955efb5ff9a93
Groovy:2.4.7 Ant:2015 年 6 月 29 日编译的 Apache Ant(TM) 版本 1.9.6 JVM:1.8.0_191(甲骨文公司 25.191-b12) OS: Mac OS X 10.14.6 x86_64
这对我有用
对于新用户,请考虑使用 gradle 插件:
plugins {
id "io.freefair.lombok" version "5.3.3.3"
}
那么你不需要compileOnly
或annotationProcessor
我使用 MacBook 和 Gradle 7.1.1。在 build.gradle 文件中,我在没有插件的情况下添加了以下内容,然后它可以成功构建。
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
testCompileOnly 'org.projectlombok:lombok:1.18.20'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
}