Я хочу добавить Lombok
к Gradle
многомодульному проекту, но мне трудно его настроить. Читал документацию и несколько страниц, но я не могу заставить его работать, когда он связан с несколькими модулями.
Обновление: обновлено до версии Gradle 4.10.3
, Java 8
В IntelliJ я мог бы заставить проект распознавать аннотацию @Builder
в одном модуле и использовать сгенерированный класс построителя в отдельном модуле. Тем не менее, при запуске gradle build
на терминале, я получаю:
/myprj/module1/src/main/java/CampaignTracker.java:143: error: cannot find symbol
CampaignBuilder campaignBuilder = Campaign.builder()
^
symbol: method builder()
location: class CampaignLead
У нас есть Gradle
многомодульный проект, который имеет следующую структуру:
myprj
|- common
|- Campaign.java
|- build.gradle
|- module1
|- CampaignTracker.java
|- build.gradle
|- module2
...
build.gradle
В общем модуле мы используем @Builder
аннотацию lombok в Campaign.java
классе, например:
@Builder
@AllArgsConstructor
public class Campaign {
...
}
Затем в отдельном модуле с именем module1
мы хотим использовать сгенерированный компоновщик с помощью lombok, например:
public class CampaignTracker implements Tracking {
void buildCampaign() {
CampaignBuilder campaignBuilder = Campaign.builder()
.id(...)
.name(...);
//more stuffs
}
}
В нашем корне build.gradle
имеем:
subprojects {
repositories {
mavenLocal()
mavenCentral()
}
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'idea'
apply plugin: "net.ltgt.apt"
apply plugin: 'jacoco'
tasks.withType(Test) {
systemProperty 'user.country', 'US'
systemProperty 'user.language', 'en'
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
}
}
Моя проблема в том, что когда gradle компилирует второй модуль, который зависит от общего, он не находит предположительно сгенерированный класс Lombok Builder.
Обновление: если я собираю модуль самостоятельно с помощью gradle clean build -p commons -x test
, я вижу, что генерируется CampaignBuilder
, но когда я собираю весь проект, это не так.
Есть ли у вас идеи, почему Gradle не распознает / не находит сгенерированный Lombok код в отдельном модуле?