我有两个maven模块。一个名为tests
,一个ws-ejb
。
在tests
pom.xml中,我已将ws-ejb
设置为依赖项,因此我可以在测试中使用EJB。
这是我的tests
maven模块的pom.xml的缩短版本:
<parent>
<artifactId>myproj</artifactId>
<groupId>myproj</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>tests</artifactId>
<dependencies>
<dependency>
<groupId>myproj</groupId>
<artifactId>ws-ejb</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
<type>war</type>
<dependencies>
<dependency>
...
<!-- other dependencies in the file: junit and javax.ejb -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>tests</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
<plugin>
<plugins>
<build>
但是当我运行我的测试时,我得到一个编译错误,指出我的bean无法找到,但我将它作为依赖项,我的IDE不会抱怨丢失的bean,但是maven会:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:testCompile (default-testCompile) on project tests: Compilation failure: Compilation failure:
[ERROR] /home/r/projects/myproj/trunk/tests/src/test/java/com/myproj/MyTest.java [3,19]package com.myproj.beans does not exist
我在com.myproj.beans
模块中设置为依赖项的maven模块ws-ejb
中确实存在包tests
。那有什么不对?
修改
这是MyTest.java,位于tests
src/test/java/com/myproj/MyTest.java
maven模块中
package com.myproj;
import com.myproj.beans.MyBean; // compilation error here. If I remove this line it works and the test is run!
//MyBean is located at `ws-ejb` maven module under src/main/java/com.myproj.beans
import javax.ejb.EJB;
import org.junit.Test;
public class MyTest {
@Test
public void test() {System.out.println("Print something...");}
}
答案 0 :(得分:0)
由于您没有发布任何示例代码我只能猜测。但我的猜测是你的测试代码不在你项目的测试文件夹中。那么这是什么意思?这意味着maven只是尝试编译和/或运行您的测试项目,这会导致异常。尝试从依赖项中删除scope属性并再次尝试。只有在使用带有例如JUnit的测试文件夹时,测试范围才有效。如果您的代码位于&#34; main&#34;文件夹这不起作用,因为在运行时无法访问依赖项。如果有什么不清楚或你有一些我没有得到的信息请评论:)
亲切的问候
编辑:为了扩展一点:我强烈建议在作为测试的工件中为给定的工件编写测试代码。这样,如果测试失败,您将在具有错误的工件中获得maven-build故障。要了解其工作原理,您只需为特定类添加一个JUnit测试(大多数IDE将为您提供支持)
编辑2:好的,我做了一个快速的googlesearch:this article可以提供如何使用这些类的答案。我希望这可以解决问题:)