如何在多个模块中使用mvn test?

时间:2011-02-22 07:57:37

标签: java unit-testing testing maven

我有两个maven模块,A和AB,AB取决于A中的测试文件。两者都引用父pom。

我发现了test-jar的魔力,它允许我编译我的程序,但我仍然无法使用mvn test运行测试。

奇怪的是,mvn包测试似乎有效。

这是我的基本配置:

 ...
 <parent>
   <groupId>com.acme.parent</groupId>
   <artifactId>parent</artifactId>
   <relativePath>../pom.xml</relativePath>
   <version>1.0</version>
 </parent>
 <groupId>com.acme</groupId>
 <artifactId>A</artifactId>     
 <packaging>jar</packaging>
 <version>1.0</version>
 ...

 <build>
   <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <executions>
        <execution>
          <goals>
            <goal>test-jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

项目AB(取决于A)

...
<parent>
  <groupId>com.acme.parent</groupId>
  <artifactId>parent</artifactId>
  <relativePath>../pom.xml</relativePath>
  <version>1.0</version>
</parent>
<artifactId>AB</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<dependency>
  <groupId>com.acme</groupId>
  <artifactId>A</artifact>
  <version>1.0</version>
</dependency>
<dependency>
  <groupId>com.acme</groupId>
  <artifactId>A</artifact>
  <version>1.0</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>
...

最后,来自父pom的相关位:

...
<groupId>com.acme.parent</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
  <module>A</module>
  <module>AB</module>
</module>
...

所以,尽管如此,我如何让mvn测试按预期运行?

顺便说一句,我正在使用maven 2.2.1。

1 个答案:

答案 0 :(得分:0)

这可能与其中一个未解决的错误有关,例如MNG-3559

基本上,如果仅从父pom运行mvn test,则项目A的测试类不可见。一旦创建了包A的jar(在package阶段),它们就可见了。