java - Lombok @getter 无法在 src/test/java 包中工作

标签 java gradle lombok java-11

我已将 jdk 从 10 升级到 11,所有依赖项均更新为使用最新版本。使用 gradle 包装器编译时会抛出以下错误

符号:方法 getId() TestLombok.java:55:错误:找不到符号 object.setId(Long.valueOf(getRandomString(5, onlyNumbers)));

  • Gradle Wrapper 分发版本 5.4.1
  • JDK 11.0.2
  • Mac 机器
  • Lombok 1.18.8

我尝试过不同版本的lombok,但无法解决问题

  • 1.18.8
  • 1.18.4

之前我使用的是lombok 1.18.2和annotationprocessor 1.18.2

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class User {

  @JsonProperty("id")
  public Long id;
}

我希望 gradle5.x.x 版本可以解决这些问题,但问题仍然存在。如果我们在使用 gradle 包装器版本时遇到任何问题,请告诉我。以下是我的 build.gradle 文件

buildscript {
    ext {
        springBootVersion = '2.1.1.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url "https://jitpack.io" }
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
    }
}


apply plugin: "java"
apply plugin: "eclipse"
apply plugin: "org.springframework.boot"

group = "com.demo"
version = "0.0.1-SNAPSHOT"
sourceCompatibility = 11
targetCompatibility = 11

repositories {
    maven { url "https://plugins.gradle.org/m2/" }
    maven { url "http://repo.maven.apache.org/maven2" }
    maven { url "https://repo.spring.io/milestone" }
    maven { url "https://maven.google.com" }
    jcenter()
    mavenCentral()
}

dependencies {
    compile group: 'javax.inject', name: 'javax.inject', version: '1'
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '2.1.4.RELEASE'
    compile("org.springframework.boot:spring-boot-starter-web")
    compileOnly("org.projectlombok:lombok:1.18.8")
    compile("org.mockito:mockito-core:" + mockitoVersion)
    test.useJUnitPlatform()
    annotationProcessor ('org.projectlombok:lombok:1.18.8')
    testCompileOnly("org.projectlombok:lombok:1.18.8")

}

最佳答案

对于测试源集中的Lombok注解,需要将Lombok添加到两个依赖配置中:

testCompileOnly '...'
testAnnotationProcessor '...'

compileOnlyannotationProcessor相同,第一个使注释可供代码使用,第二个在编译期间激活注释处理。

关于java - Lombok @getter 无法在 src/test/java 包中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56489355/

相关文章:

java - 用标签替换每个单词

eclipse - 在Eclipse中创建Gradle项目时,示例项目类型代表什么?

java - Visual Studio代码-Java- Lombok -该类型的方法未定义

java - Lombok - 在构造函数输入参数中保留字段的注释

java - 为所需的 super 字段生成构造函数

java - 在 Java 中创建字段数组

java - 如何从 Java 中的 HttpResponse 获取单个表单字段并将其写入文件?

gradle - 使用gradle时无法推断groovy类路径

java - 迭代后从 HashSet 中删除失败

android - Nativescript命令gradlew.bat失败错误