我参加了一个使用maven-surefire-plugin
(自动测试)来触发JMH基准测试的项目,并向其中添加了module-info.java
。现在,META-INF/BenchmarkList
不再生成了(实际上,整个目录都丢失了),因此在启动基准测试时我遇到了以下错误:
ERROR: Unable to find the resource: /META-INF/BenchmarkList
我怀疑Java模块正在阻止注释处理器正常运行,但是我不知道如何解决它。有什么想法吗?
答案 0 :(得分:0)
我通过反复试验弄清楚了。它看起来像是maven-compiler-plugin 3.8.0中的错误(或“功能”)。当module-info.java
存在时,将不再自动拾取JMH注释处理器。添加此配置可以解决我的问题:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
[...]
<annotationProcessorPaths>
<path>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
</path>
</annotationProcessorPaths>
[...]
</configuration>
</plugin>
更新:我对maven-compiler-plugin提出了bug report。