我有2个maven模块和测试如下:
Module1
`src/test/java/Parent`
Module2
`src/test/java/Test // Test extends Parent`
Module1对Module1具有朗姆酒依赖性
当我运行mvn test时,我得到以下错误:
org.apache.maven.surefire.util.SurefireReflectionException:java.lang.reflect.InvocationTargetException;嵌套异常是java.lang.reflect.InvocationTargetException:null java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) 在org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) 在org.apache.maven.surefire.booter.ProviderFactory $ ProviderProxy.invoke(ProviderFactory.java:110) 在org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) 在org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) 在org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68) 引起:java.lang.NoClassDefFoundError:Parent
知道我可能做的正确吗? eclipse中的编译成功。
答案 0 :(得分:0)
通常在Maven中,单元测试受模块限制,不会传播,这意味着您无法在其他模块中使用它们。不幸的是,Eclipse并没有像你已经意识到的那样100%正确地进行这种分离。
如果您需要从src/test/
创建called test-jar
which contains文件,您可以从其他模块重用这些类。这意味着您需要将以下内容添加到Module1
:
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
</project>
在其他模块中,您需要使用以下命令将依赖项添加到此单独创建的工件:
<project>
...
<dependencies>
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<type>test-jar</type>
<version>version</version>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>