2017-04-18 79 views
0

我在mvn中有以下结构。如何从父mvn模块运行测试?

| pom.xml (parent) 
| 
| 
+----- module A (common classes) 
|  | pom.xml 
|  | 
|  \---src 
|   +---main 
|   | 
|   \---test 
|    +---junit 
|    | 
|    \---integration 
| 
+----- module B (web app) 
|  | pom.xml 
|  | 
|  \---src 
|   +---main 
| 
+----- module C (web app) 
|  | pom.xml 
|  | 
|  \---src 
|   +---main 

模块A是所有后续模块(B,C,...)继承的模块。该模块具有通用功能和junit /集成测试用例。这不是一个网络应用程序。

模块B是一个Web应用程序。它有模块B.

模块C的依赖性是一个Web应用程序。它在模块A.这样的模块B.

我们的球衣休息/ API代码依赖生命无论我们怎样部署模块,我们将始终有机会获得休息/ API。

到目前为止,我已经成功地配置模块C的Maven插件的FailSafe当我运行顶(父)的pom.xml站起来一个Tomcat实例(即:MVN验证)。

然而,模块C是不是能看到模块答:我曾尝试配置Maven-JAR-插件(http://maven.apache.org/guides/mini/guide-attached-tests.html)的集成测试。

在模块AI的pom.xml的有:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>3.0.2</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>test-jar</goal> 
     </goals> 
     <configuration> 
      <includes> 
      <include>**/*IT.java</include> 
      </includes> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

和模块C1有:

<dependency> 
     <groupId>groupId</groupId> 
     <artifactId>SCCommon</artifactId> 
     <type>test-jar</type> 
     <classifier>tests</classifier> 
     <version>9.1.0-SNAPSHOT</version> 
     <scope>test</scope> 
    </dependency> 

谁能帮我找出我如何可以运行在MODULA的集成测试当mvn正在运行Module C故障安全插件时。

注:集成测试被命名为* IT.java因此得到由故障安全插件回升。

是否有这样做或Am即使使用正确的插件的任何其他方式?

非常感谢。

+0

如果您需要制作' **/* IT.java'这是指示器具有单独的集成测试模块,您应该在其中进行集成测试。 – khmarbaise

回答

0

如果C模块包含一个与测试 classfier你可以参考这种依赖在你的Maven故障保护,插件(自2.15)配置的<dependenciesToScan>属性的依赖。

http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#dependenciesToScan

<dependency> 
    <groupId>com.group</groupId> 
    <artifactId>A</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <classifier>tests</classifier> 
</dependency> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.15</version> 
    <executions> 
     <execution> 
      <id>it</id> 
      <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <dependenciesToScan> 
      <dependency>com.group:A</dependency> 
     </dependenciesToScan> 
    </configuration> 
</plugin> 

使用我结束了一个空的测试存档您的maven-JAR-插件配置。我不得不将模式更改为<include>**/*IT.class</include>

+0

非常感谢,我已将测试分类器和dependenciesToScan标签添加到配置中。这些都在Module C pom中。我还将.java的扩展名更改为.class,以使maven-jar-plugin正常工作。选中并且存档不是空的。现在,当我运行mvn验证我得到 - >无法执行项目目标模块C:无法解析项目com.xxx.connect的依赖关系:ModuleC:war:9.1.0-SNAPSHOT:找不到工件com.xxx.pathways 。常见:ModuleA:罐子:测试:9.1.0快照。但是,当我转到模块A的目标下时,可以看到ModuleA-9.1.0-SNAPSHOT-tests.jar文件 – allegjdm93

+0

@ allegjdm93在运行“mvn verify”之前,您是否执行了'mvn install'以将模块A安装到本地mvn存储库,所以其他项目可以使用依赖?或者也许在POM文件中有一个错字。 –

相关问题