Java 带2个模块的Maven集成测试

Java 带2个模块的Maven集成测试,java,maven,docker,integration-testing,fabric8,Java,Maven,Docker,Integration Testing,Fabric8,我有一个包含两个模块的应用程序: Web JSF(部署在Tomcat上的WAR) REST服务(部署在Wildfly上的战争) 对于集成测试,我使用maven插件: maven故障保护插件 fabric8 maven插件 我的测试源代码和资源位于两个应用程序src/integrationtest/java中 在集成测试阶段,fabric8构建Wildfly docker映像,复制构建的articact(REST服务战争),启动容器并运行测试。它工作正常 但是。。。我想将maven配置为部

我有一个包含两个模块的应用程序:

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

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

对于集成测试,我使用maven插件:

  • maven故障保护插件

  • fabric8 maven插件

我的测试源代码和资源位于两个应用程序src/integrationtest/java中

在集成测试阶段,fabric8构建Wildfly docker映像,复制构建的articact(REST服务战争),启动容器并运行测试。它工作正常

但是。。。我想将maven配置为部署2个应用程序( Web JSF WAR工件和REST服务(WAR),并从JSF WAR/src/integration test/java运行集成测试。 使用fabric8插件很容易构建和运行Tomcat和Wildfly容器,但我找不到如何部署来自不同maven模块的两个不同工件。 也许你有什么想法

致以最良好的祝愿,
MJ.

io.fabric8 docker maven插件支持多个图像。您可以创建一个负责运行集成测试的模块。本模块将依赖于您在问题中提到的2个战争工件

    <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>

com.your.maven.group.here
你的maven神器
${project.version}
战争
...
然后可以使用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>

io.fabric8
docker maven插件
....
我的管理网站
管理员用户体验
码头
8080
mkdir-p/run/jetty/tmp/jetty
chmod-R 1777/tmp
chown-R码头:码头/var/lib/jetty/run/jetty/tmp/jetty
迪尔
/var/lib/码头
我的管理员ux
这里:你的maven工件:战争
/网络应用
myAdminSite.war
src/main/docker/admin-ux/resources/service.properties
/资源
码头
10540:8080
动物园管理员
.....

首先,我建议将您的集成测试保留在
src/test/java
中,并遵循命名约定,如单元测试
*test.java
等,以及集成测试,如
*IT.java
等。如果您想要部署两个应用程序,我将创建一个单独的模块,该模块依赖于您想要部署的两个应用程序,并且在那里进行部署…(还有Docker容器…)