Caliper test using exec-maven-plugin is saying main method signature isn't valid

北城余情 提交于 2019-12-13 05:18:30

问题


I'm trying to get Caliper working with maven, I haven't successfully ran a caliper benchmark test as of yet.

Caliper version: 1.0-beta-1

My benchmark:

public class MyXercesSAXHandlerBenchmark extends Benchmark{

    @Param({"10", "100", "1000", "10000"}) private int length;


    public void timeNanoTime(int reps) {
        for (int i = 0; i < reps; i++) {
            System.nanoTime();
        }
    }

    public static void main(String[] args) {
        CaliperMain.main(MyXercesSAXHandlerBenchmark.class, args);
    }
}

My maven pom.xml has:

<profiles>
    <profile>
        <id>benchmarks</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.1</version>
                    <executions>
                        <execution>
                            <id>caliper</id>
                            <phase>compile</phase>
                            <goals>
                                <goal>java</goal>
                            </goals>
                            <configuration>
                                <classpathScope>test</classpathScope>
                                <mainClass>my.path.to.benchmark.MyXercesSAXHandlerBenchmark</mainClass>
                                <arguments>


                                </arguments>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

I ran:

mvn clean install mvn compile -P benchmarks -e -X

Caused by: org.apache.maven.plugin.MojoExecutionException: An exception occured while executing the Java class. The specified mainClass doesn't contain a main method with appropriate signature.
    at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:345)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
Caused by: java.lang.Exception: The specified mainClass doesn't contain a main method with appropriate signature.
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:294)
    at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.NoSuchMethodException: com.google.caliper.runner.CaliperMain.main([Ljava.lang.String;)
    at java.lang.Class.getMethod(Class.java:1632)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283)
    ... 1 more

回答1:


The maven-exec-plugin doesn't work with 1.0-beta-1. You need to build caliper from a revision later than 6d05814727e8b119651247952dedf4ab321d890a - HEAD, of course, works.



来源:https://stackoverflow.com/questions/21070459/caliper-test-using-exec-maven-plugin-is-saying-main-method-signature-isnt-valid

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!