JMH Невозможно найти ресурс:/META-INF/BenchmarkList

Я не могу запустить простой тест JMH внутри eclipse. Зависимости Maven:

        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-core</artifactId>
            <version>1.12</version>
        </dependency>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-generator-annprocess</artifactId>
            <version>1.12</version>
        </dependency>

Java-код:

public class BTest {
    @Benchmark
    public void test() {
        // todo
    }

    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                 .include(BTest.class.getSimpleName())
                  .build();

        new Runner(opt).run();
    }
}

Результат выполнения:

Исключение в потоке "main" java.lang.RuntimeException: ERROR: Unable найти ресурс:/META-INF/BenchmarkList на org.openjdk.jmh.runner.AbstractResourceReader.getReaders(AbstractResourceReader.java:96)   at org.openjdk.jmh.runner.BenchmarkList.find(BenchmarkList.java:104)   на org.openjdk.jmh.runner.Runner.internalRun(Runner.java:256) at org.openjdk.jmh.runner.Runner.run(Runner.java:206) в com.test.BTest.main(BTest.java:24)

Возможно, проблема в том, что я запускаю ее из eclipse.

Спасибо за любую помощь.

Ответ 1

Наконец, выяснилось. Возникла проблема с отсутствующим плагином exec-maven-plugin
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>run-benchmarks</id>
            <phase>integration-test</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <classpathScope>test</classpathScope>
                <executable>java</executable>
                <arguments>
                    <argument>-classpath</argument>
                    <classpath />
                    <argument>org.openjdk.jmh.Main</argument>
                    <argument>.*</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

Ответ 2

Я понял, что у меня уже есть exec-maven-plugin в моем родительском pom, как упомянуто в ожидаемом ответе, но мне пришлось запустить mvn clean install как упомянуто в fooobar.com/questions/12723777/... чтобы исправить ошибку.

Ответ 3

Имея ту же ошибку; и запуск тестов от maven или intellij не сработал. Я понял, что проблема заключалась в том, что я написал тест в Котлине. Изменение кода на Java решило проблему.