Maven 中的注释处理器输出
2022-09-03 06:30:47
我使用JSR 269作为在编译过程中分析代码并在需要时失败的方法。我在maven中显示注释处理器的输出时遇到问题(Ant确实显示输出),我正在使用javax.annotation.processing.Messager来显示警告和错误,但在maven中,我没有看到它的输出。(我知道它会运行,因为它会像它应该的那样生成代码)。有什么想法吗?
我使用JSR 269作为在编译过程中分析代码并在需要时失败的方法。我在maven中显示注释处理器的输出时遇到问题(Ant确实显示输出),我正在使用javax.annotation.processing.Messager来显示警告和错误,但在maven中,我没有看到它的输出。(我知道它会运行,因为它会像它应该的那样生成代码)。有什么想法吗?
我认为您遇到了Maven错误,或者更好的是编译器插件中的错误 - MCOMPILER-66。当涉及到注释处理时,编译器插件有几个问题,例如MCOMPILER-62。实际上,最好的选择imo是禁用编译器插件的注释处理,并使用maven-processor-插件。在这篇博客文章中,您可以看到如何使用它。它看起来像这样:
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<compilerArgument>-proc:none</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>1.3.7</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>process-sources</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>1.1.0.Final</version>
<scope>compile</scope>
</dependency>
</dependencies>
</plugin>
还要注意注释处理器依赖项如何很好地限定为仅插件的范围。
您可以通过在 maven-compiler-plugin 配置中启用 showWarnings 标志来执行此操作:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
</plugins>
</build>
另请参见 https://github.com/Cosium/annotation-processor-logger#enable-all-logging-levels