Maven集成testing2个模块

我有一个应用程序与2个模块:

  • Web JSF(部署在Tomcat上的WAR)

  • REST服务(部署在Wildfly上的WAR)

对于集成testing,我使用Maven插件:

  • maven故障安全插件

  • fabric8 maven插件

我的testing源代码和资源位于两个应用程序src / integration-test / java中。

在集成testing阶段,fabric8构buildWildfly docker镜像,复制构build的articact(REST Services WAR),启动容器并运行testing。 它工作正常。

但是…我想configurationmaven以部署2个应用程序(Web JSF WAR工件和REST服务WAR),并从JSF WAR / src / integration-test / java运行集成testing。 使用fabric8插件很容易构build和运行Tomcat和Wildfly容器,但我无法find如何从不同的Maven模块部署2个不同的工件。 也许你有什么想法?

最好的问候,MJ。

io.fabric8 docker-maven-plugin支持多个图像。 您可以创build一个负责运行集成testing的模块。 这个模块将取决于你在问题中提到的2个WAR工件。

  <dependencies> <dependency> <groupId>com.your.maven.group.here</groupId> <artifactId>your-maven-artifact</artifactId> <version>${project.version}</version> <type>war</type> </dependency> <dependency> ... </dependency> </dependencies> 

然后你可以使用io.fabric8设置必要的容器。 这里是我的项目中的一个例子(为了简单和简洁的答案,删除了一些细节)。 这个例子不是关于Tomcat和Wildfly,而是为了说明这个想法。

  <plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <configuration> <images> <image> .... </image> <image> <name>my-admin-site</name> <alias>admin-ux</alias> <build> <from>jetty</from> <ports> <port>8080</port> </ports> <runCmds> <run>mkdir -p /run/jetty /tmp/jetty</run> <run>chmod -R 1777 /tmp</run> <run>chown -R jetty:jetty /var/lib/jetty /run/jetty /tmp/jetty</run> </runCmds> <assembly> <mode>dir</mode> <basedir>/var/lib/jetty</basedir> <inline xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"> <id>my-admin-ux</id> <dependencySets> <dependencySet> <includes> <include>com.your.maven.group.here:your-maven-artifact:war</include> </includes> <outputDirectory>./webapps</outputDirectory> <outputFileNameMapping>myAdminSite.war</outputFileNameMapping> </dependencySet> </dependencySets> <files> <file> <source>src/main/docker/admin-ux/resources/service.properties</source> <outputDirectory>./resources</outputDirectory> </file> </files> </inline> <user>jetty:jetty</user> </assembly> </build> <run> <ports> <port>10540:8080</port> </ports> <links> <link>zookeeper:zookeeper</link> </links> </run> </image> <image> ..... </image> </images> </configuration> </plugin>