JMH不在Java模块内运行(无法找到资源:/ META-INF / BenchmarkList)

时间:2018-12-26 05:41:32

标签: java maven java-module jmh

我参加了一个使用maven-surefire-plugin(自动测试)来触发JMH基准测试的项目,并向其中添加了module-info.java。现在,META-INF/BenchmarkList不再生成了(实际上,整个目录都丢失了),因此在启动基准测试时我遇到了以下错误:

ERROR: Unable to find the resource: /META-INF/BenchmarkList

我怀疑Java模块正在阻止注释处理器正常运行,但是我不知道如何解决它。有什么想法吗?

1 个答案:

答案 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