delombok目标旨在将 java代码src/main/lombok从target/generated-source/delombok. 然后,将在其中找到的其他 java 代码src/main/java组合起来target/generated-source/delombok以生成组合的 java 类。
将 delombok 视为源代码生成器会有所帮助。
那么如何才能得到你真正想要的呢? (请注意,Maven 有一个addCompileSourceRoot方法,但没有相应的removeCompileSourceRoot。)想象一下以下hack:
- 覆盖默认值
<build><sourceDirectory>fromsrc/main/java是${project.build.directory}/generated-sources/delombok。
- 覆盖默认的 delombok
sourceDirectory从src/main/lombokto src/main/java,并禁用addOutputDirectory。
基本上,您将使用src/main/java,但 Maven 会忽略它而使用target/generated-sources/delombok. Lombok 插件将转换src/main/java为target/generated-sources/delombok.
<build>
<sourceDirectory>${project.build.directory}/generated-sources/delombok</sourceDirectory>
<plugins>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.16.6.1</version>
<executions>
<execution>
<id>delombok</id>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
<configuration>
<addOutputDirectory>false</addOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
请注意,您不需要破解其他插件,例如maven-jar-pluginor maven-javadoc-plugin,因为它们应该尊重sourceDirectory.
使用此 hack 需要您自担风险。 (我的猜测是这可能会使您的 IDE 和其他一些开发人员感到困惑。)