Maven 集成测试与 2 个模块
Maven integration tests with 2 modules
我有一个包含 2 个模块的应用程序:
Web JSF(WAR 部署在 Tomcat)
REST 服务(WAR 部署在 Wildfly 上)
对于集成测试,我使用 maven 插件:
maven 故障保护插件
fabric8 maven 插件
我的测试源代码和资源位于两个应用程序中 src/integration-test/java。
在集成测试阶段,fabric8 构建 Wildfly docker 图像,复制构建的 articact(REST 服务 WAR),启动容器和 运行s 测试。它工作正常。
但是...我想配置 maven 来部署 2 个应用程序 (
Web JSF WAR 工件和 REST 服务 WAR) 和来自 JSF WAR/src/integration-test/java 的 运行 集成测试。
使用 fabric8 插件很容易构建 运行 Tomcat 和 Wildfly 容器,但我无法找到如何从不同的 Maven 模块部署 2 个不同的工件。
也许你有什么想法?
此致,
MJ.
io.fabric8 docker-maven-plugin 支持多图。您可以创建一个模块负责 运行 集成测试。此模块将取决于您在问题中提到的 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>
我有一个包含 2 个模块的应用程序:
Web JSF(WAR 部署在 Tomcat)
REST 服务(WAR 部署在 Wildfly 上)
对于集成测试,我使用 maven 插件:
maven 故障保护插件
fabric8 maven 插件
我的测试源代码和资源位于两个应用程序中 src/integration-test/java。
在集成测试阶段,fabric8 构建 Wildfly docker 图像,复制构建的 articact(REST 服务 WAR),启动容器和 运行s 测试。它工作正常。
但是...我想配置 maven 来部署 2 个应用程序 ( Web JSF WAR 工件和 REST 服务 WAR) 和来自 JSF WAR/src/integration-test/java 的 运行 集成测试。 使用 fabric8 插件很容易构建 运行 Tomcat 和 Wildfly 容器,但我无法找到如何从不同的 Maven 模块部署 2 个不同的工件。 也许你有什么想法?
此致, MJ.
io.fabric8 docker-maven-plugin 支持多图。您可以创建一个模块负责 运行 集成测试。此模块将取决于您在问题中提到的 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>