У меня есть проект maven с несколькими модулями maven. Некоторые классы снабжены аннотациями Lombok. Я пытаюсь упаковать файлы JAR только с подмножеством классов. Моя конфигурация компиляции Maven выглядит следующим образом. https://maven.apache.org/plugins/maven-jar-plugin/examples/include-exclude.html
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<includes>
<include>**/package_a/*</include>
</includes>
</configuration>
</plugin>
И я вижу следующее сообщение об ошибке, где XXX.java не является частью package_a. Но методы XXX.java вызываются в каком-то классе из package_a:
[ERROR] C:/..src dir../XXX.java :[123,45] cannot find symbol.
[ERROR] symbol: method [setter name here]
Я пытался создать jar другого пакета <include>**/package_b/*</include>
, где Package_b не включает в себя классы с аннотациями lombok и не ссылается на классы с ними,И это успешно. Так что я думаю, может ли это быть связано с поведением Ломбок. Компиляция так или иначе основана на необработанных файлах Java, потому что delombok происходит только с файлами Java, включенными в плагин компиляции. Имеет ли lombok совместимый с плагином компиляции тег?
Я пробовал следующий обходной путь, и код может компилироваться с обоими. Тем не менее, компиляция все занимает больше времени, чем ожидалось.
Удалите тег include из плагина maven compile. Таким образом, все классы скомпилированы.
Деломбок в дочернем модуле выполняется следующим образом. Сохраняет тег includes
в плагине maven compile. http://anthonywhitford.com/lombok.maven/lombok-maven-plugin/usage.html
<sourceDirectory>target/generated-sources/delombok</sourceDirectory>
<build>
<plugins>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.18.10.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>