2012-07-06 8 views
6

surefire v2.12を使用する必要がありますが、そのバージョンを実行するたびにスタックトレースが取得されます。私がv2.10を実行した場合、エラーは発生しません。このバージョンが必要なので、@Categoryでテストクラスに注釈を付け、UnitTestsまたはIntegrationTestsとしてラベルを付けることができます。 は、ここに私のコマンドです:MVNテスト-Dsurefire.version = 2.12 -Xテストフェイズの確かなプラグインで例外が発生する

 
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project PROJECT: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test failed: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: null: ExceptionInInitializerError: Unexpected ClassNotFoundException looking up class 'org.apache.maven.cli.MavenCli' -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project ASPEN: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test failed: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: null 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
    Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test failed: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: null 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    ... 19 more 
    Caused by: org.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: null 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:197) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeGetter(ReflectionUtils.java:69) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.getSuites(ProviderFactory.java:148) 
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.getSuitesIterator(ForkStarter.java:317) 
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.runSuitesForkPerTestSet(ForkStarter.java:149) 
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:118) 
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:199) 
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAllProviders(AbstractSurefireMojo.java:176) 
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:135) 
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:98) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    ... 20 more 
    Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) 
    ... 30 more 
    Caused by: java.lang.ExceptionInInitializerError 
    ... 2 more 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:169) 
    at org.junit.runner.Description.getTestClass(Description.java:207) 
    at org.apache.maven.surefire.common.junit48.FilterFactory$GroupMatcherCategoryFilter.shouldRun(FilterFactory.java:207) 
    at org.apache.maven.surefire.junitcore.JUnitCoreProvider.getSuitesAsList(JUnitCoreProvider.java:169) 
    at org.apache.maven.surefire.junitcore.JUnitCoreProvider.getSuites(JUnitCoreProvider.java:102) 
    ... 35 more 
    Caused by: java.lang.RuntimeException: Unexpected ClassNotFoundException looking up class 'org.apache.maven.cli.MavenCli' 
    ... 12 more 

    (deleted lines here) 

私のpom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<parent> 
    <artifactId>sample</artifactId> 
    <groupId>sample</groupId> 
    <version>1.0</version> 
</parent> 
<modelVersion>4.0.0</modelVersion> 
<artifactId>webapp</artifactId> 
<packaging>war</packaging> 
<dependencies> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-all</artifactId> 
     <version>1.9.0</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.10</version> 
    </dependency> 
</dependencies> 
<reporting> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>findbugs-maven-plugin</artifactId> 
      <version>2.5.1</version> 
     </plugin> 
    </plugins> 
</reporting> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <dependencies> 
       <dependency> 
        <groupId>org.apache.maven.surefire</groupId> 
        <artifactId>surefire-junit47</artifactId> 
        <version>${surefire.version}</version> 
        <scope>test</scope> 
       </dependency> 
      </dependencies> 
      <configuration> 
       <groups>com.webapp.api.annotation.type.${group.include}</groups> 
       <excludedGroups>com.webapp.api.annotation.type.${group.exclude}</excludedGroups> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
</project> 

また、私はからセットアップ別のプロジェクトでこれを行うことができましたスクラップ。しかし、この場合、私は確信してプラグインのバージョンを上書きしていることがわかります。

アイデア?

おかげ

このPOMへのバージョンを入れていないのはなぜ、このPOMはあなたによって制御され、彼は特性を与えるために逃した原因これまでのプロジェクトを使用する他の誰が、それは動作しないことに驚いなります原因
+0

あなたはどのバージョンのMavenを使用していますか? – gkamal

+0

maven-surefire-pluginの統合テストが間違った方法です。統合テストでは、代わりにmaven-failsafe-pluginを使用してください。 – khmarbaise

+0

@gkamal私は使用しています3.0.4 – bclarance

答えて

1

コマンドラインで。 BTW:mvn -X -Dsurefire.version = 2.12などで出力をチェックしましたか?同じエラーメッセージが表示されると思います。

私は再チェックしていると、あなたがそのようにバージョンを定義する場合、プロジェクトが誰かは、コマンドライン上のオプション(-D ...)あなたはこのようなものを取得します欠場場合はもはや正しくありません:

INFO] Scanning for projects... 
[ERROR] The build could not read 1 project -> [Help 1] 
[ERROR] 
[ERROR] The project com.soebes.katas:code:1.0-SNAPSHOT (/home/katas/pom.xml) has 1 error 
[ERROR]  'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin must be a valid version but is '${surefire.version}'. @ line 36, column 20 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException 

つまり、プラグインのバージョン(またはプラグインの依存関係)をコマンドラインでオプションを使って定義するのは本当に悪い考えです。 必要なバージョンのバージョンをpomに定義し、surefireおよび/またはfailsafeプラグインを使用してユニットテストと統合テストを正しく使用することをお勧めします。これはあなたの問題を解決します。

+0

私はもっと同意できませんでした。その親のpomは最終的に更新されます。私の問題は、親pomには他の多くの扶養家族がいることです。その変更を永久に適用できるようになる前に、それが機能していることを確認する必要があります。はい、私はそれを-Xオプションで実行しましたが、それがどのように私を助けているかわかりません。探しているものが分かっているなら助言してください。 – bclarance

+0

バージョン番号をpomに入れて、そのままテストしてください。さらに、プラグインのバージョンやコマンドラインへの依存関係を使用しても機能しません。そのポームを変更するのに50秒かかり、あなたが与えたバージョンでテストしました。あなたはなぜあなたが継承されたものの代わりに別のmaven-surefire-puginのバージョンを使用することにしたのかをpomにコメントすることができます。 – khmarbaise

+0

バージョンが変更されたプロジェクトpomを変更しても例外が発生しました。 mvn clean test -e -X。 [DEBUG] org.apache.maven.surefire:surefire-api:jar:2.12:他のアイデアをコンパイルするためにコンパイルしましたか? – bclarance

関連する問題