0

我有一个使用@Autowired 注释和@ContextConfiguration 和@Category 注释的测试类。

测试通过 Eclipse 运行时运行良好。但是当我尝试通过命令行运行它时,它会抛出以下错误。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 25.690s
[INFO] Finished at: Wed Jun 12 09:56:48 GMT+05:30 2013
[INFO] Final Memory: 31M/81M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.14.1:integration-test (default) on project OmnitureSeleniumTests: Execution default of goal org.apache.maven.plugins:maven-failsafe-plugin:2.14.1:integration-test failed: There was an error in the forked process
[ERROR] java.lang.NoSuchMethodError: org.junit.runner.Request.classes(Lorg/junit/runner/Computer;[Ljava/lang/Class;)Lorg/junit/runner/Request;
[ERROR] at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.createReqestAndRun(JUnitCoreWrapper.java:128)
[ERROR] at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.executeEager(JUnitCoreWrapper.java:111)
 [ERROR] at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:84)
[ERROR] at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:138)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[ERROR] at java.lang.reflect.Method.invoke(Method.java:597)
[ERROR] at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
[ERROR] at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:159)
[ERROR] at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:87)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)
[ERROR] -> [Help 1]
[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/PluginExecutionException

我正在使用 junit 4.8.2 和 maven-failsafe-plugin:2.14.1

4

2 回答 2

0

我已将 maven-failsafe-plugin 的版本更改为 2.6,它现在通过命令行运行良好:)

于 2013-06-12T04:57:39.670 回答
0

从 Eclipse 与命令行运行 maven 时,可能存在许多配置/环境差异:

  1. Maven 版本/路径。在 Eclipse 中,实际的 maven 二进制文件可以通过首选项默认/显式设置,而在命令行中,您的操作系统将选择 PATH env var 中可用的第一个。使用检查 Maven 版本mvn -version
  2. Maven 用户/全局 settings.xml。通过命令行运行时,通常使用 ~/.m2/settings.xml 但这可以在 Eclipse 首选项上显式覆盖
  3. Maven 本地存储库缓存。如果您在 1 和/或 2 上存在差异,您最终可能会得到不同的本地存储库缓存。如果针对不同的本地存储库缓存执行不正确的工件分发,可能会导致构建失败。
  4. Eclipse maven 可以使用与命令行不同的 JVM 版本。
于 2013-06-12T04:49:24.690 回答