Lombok @getter не работает в пакете src / test / java - PullRequest
2 голосов
/ 07 июня 2019

Я обновил свой jdk с 10 до 11 со всеми зависимостями, обновленными для использования последних версий. При компиляции с использованием Gradle-обертки выдается следующая ошибка

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

  • Gradle Wrapper Distribution версия 5.4.1
  • JDK 11.0.2
  • Mac Machine
  • Ломбок 1.18.8

Я пробовал использовать разные версии lombok, но не смог решить проблему

  • 1.18.8
  • 1.18.4

ранее я использовал lombok 1.18.2 и процессор аннотаций 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")

}

Ответы [ 4 ]

2 голосов
/ 07 июня 2019

Вы не опубликовали свой build.gradle, но я предполагаю, что вы объявили зависимость Lombok как compileOnly, которая применяется только к основному коду.Также объявите это как testCompileOnly.

1 голос
/ 07 июня 2019

Я только что воспроизвел ту же проблему, с которой вы столкнулись, моя версия Gradle -

Версия Gradle: 5.4.1

Чтобы решить эту проблему, со ссылкой на документ Lombok (https://projectlombok.org/setup/gradle) я изменил зависимость, как показано ниже.

    compileOnly 'org.projectlombok:lombok:1.18.8'
    annotationProcessor 'org.projectlombok:lombok:1.18.8'

Вы можете взглянуть на это https://github.com/rzwitserloot/lombok/issues/1945 для получения дополнительной информации

0 голосов
/ 10 июня 2019

Для аннотаций Lombok в тестовых исходных наборах необходимо добавить Lombok в две конфигурации зависимостей:

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

Так же, как compileOnly и annotationProcessor, первая из них делает аннотации доступнымикод и второй активируют обработку аннотаций во время компиляции.

0 голосов
/ 10 июня 2019

Как сказал @Abhijit Sarkar для меня, просто добавьте testCompileOnly также к build.gradle. Если это не работает, возможно, вам придется снова включить обработку аннотаций в настройках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...