自定义注释处理器的 Maven 编译器插件问题
Posted
技术标签:
【中文标题】自定义注释处理器的 Maven 编译器插件问题【英文标题】:Maven compiler plugin issue with custom annotation processor 【发布时间】:2021-11-27 22:17:54 【问题描述】:我已经编写了一个自定义注释处理器并配置了 maven 编译器插件,如下所示,我面临Immutables 注释处理器的问题,它位于我的应用程序类路径中。当我通过 Maven 编译器插件添加我的注释处理器时,Immutables 给出了编译错误。我的项目中也需要不可变对象。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>$java.version</source>
<target>$java.version</target>
<generatedSourcesDirectory>$project.build.directory/generated-sources/</generatedSourcesDirectory>
<annotationProcessors>
<annotationProcessor>
org.smarttechie.TraceAnnotationProcessor
</annotationProcessor>
</annotationProcessors>
</configuration>
</plugin>
任何使用不可变/任何注释处理器以及我的自定义注释处理器的提示。
【问题讨论】:
【参考方案1】:将您的注释处理器打包到一个 JAR 中,并将该 JAR 作为
编译依赖。务必添加
META-INF/services/javax.annotation.processing.Processor
到你的 JAR
(内容与您的处理器类名称单行):
org.smarttechie.TraceAnnotationProcessor
如果您不希望将新 JAR 作为生成的依赖项包含在内 神器,将其标记为 prodied 和/或 true。
【讨论】:
当我添加具有自定义注释处理器的 jar 时,在编译期间不会像通过 maven 插件添加它时那样调用注释处理器。依赖范围只是编译。 抱歉,我疏忽了一步。我已经更新了我的答案。以上是关于自定义注释处理器的 Maven 编译器插件问题的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 maven-release 插件之后运行自定义 maven 插件吗?