我有一个带有多个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的一部分。但是在package_a的某个类中调用了XXX.java的方法:
[ERROR] C:/..src dir../XXX.java :[123,45] cannot find symbol.
[ERROR] symbol: method [setter name here]
我试图创建另一个软件包<include>**/package_b/*</include>
的jar,其中Package_b既不包含带有lombok批注的类,也不使用它们引用类。这是成功的。所以我想这是否可能与龙目岛行为有关。编译以某种方式基于原始Java文件,因为delombok仅在编译插件中包含的Java文件上发生。 lombok是否与compile插件兼容,包括tag?
我尝试了以下解决方法,并且代码都可以同时进行编译。但是,编译所需的时间比预期的要长。
删除maven编译插件中的includes标记。因此,所有类都已编译。
Delombok如下。在Maven编译插件中保留includes
标签。
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>