有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

gradle Lombok@getter不在src/test/java包中工作

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

symbol: method getId() TestLombok.java:55: error: cannot find symbol object.setId(Long.valueOf(getRandomString(5, onlyNumbers)));

  • Gradle包装分发版本5.4.1
  • JDK 11.0.2
  • Mac机
  • 龙目岛1.18.8

我尝试过各种版本的龙目,但无法解决这个问题

  • 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包装器版本时遇到任何问题,请告诉我。以下是我的构建。梯度锉

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")

}

共 (5) 个答案

  1. # 1 楼答案

    正如@Abhijit Sarkar所说的对我有效,所以只需将testCompileOnly也添加到build.gradle。如果这不起作用,您可能必须在“设置”中再次启用注释处理

  2. # 2 楼答案

    最终,通过将gradle版本升级到5.6以及testCompileOnly’解决了这个问题 testAnnotationProcessor“…”

    通过在构建中添加上述两个内容。梯度锉

  3. # 4 楼答案

    您没有发布build.gradle,但我猜您将Lombok依赖项声明为compileOnly,这只适用于主代码。还将其声明为testCompileOnly

  4. # 5 楼答案

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

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

    compileOnlyannotationProcessor一样,第一种方法使注释可用于代码,第二种方法在编译期间激活注释处理