2 回答
TA贡献1775条经验 获得超11个赞
解决此问题的最简单方法是将您的项目转换为多模块项目,其中注释处理器位于其自己的模块中。注释处理器有一个不同的模块,您可以使用全新的<annotationProcessorPaths>
选项通过groupId
/定义注释处理器artifactId
。
使用注释处理器的模块可能需要依赖于注释处理器模块才能首先构建它。
注意:在此答案的先前版本中,我描述了解决此问题的另一种方法,显然不能开箱即用。该部分已被删除。
TA贡献1893条经验 获得超10个赞
您可以通过单独的编译器执行更早地编译您的处理器。
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>compile-generator</id>
<phase>generate-sources</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<includes>
<include>com/example/YourProcessor.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我已经对此进行了测试,它可以工作——处理器确实在实际编译阶段稍后被调用。
如果您也从同一个项目中预编译了一些其他类,那么您可以直接在处理器中引用和使用它们。那可能很有用。
添加回答
举报