使用Maven,我需要自动将Web应用程序部署到Tomcat服务器,然后运行MainClass以执行一些部署后操作。
这两件事已经分别通过 cargo-maven2-plugin exec-maven-plugin 。但是我不知道如何将它们绑在一起。
我看到两个选项:
使“官方”maven 部署目标只需执行 cargo-plugin ,然后 exec-maven 而不执行任何其他操作< / p>
将 exec-maven 的执行绑定到货物的完成:部署
首先是我的喜好。不幸的是,我不知道如何实现其中任何一个。
当前的pom.xml:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.4.15</version>
<configuration>
<container>
<containerId>tomcat8x</containerId>
<type>remote</type>
<systemProperties>
<cargo.jvmargs>-XX:MaxPermSize=256M -Xmx1024m</cargo.jvmargs>
</systemProperties>
</container>
<configuration>
<type>runtime</type>
<properties>
<cargo.hostname>${my.hostname}</cargo.hostname>
<cargo.servlet.port>${my.port}</cargo.servlet.port>
<cargo.tomcat.manager.url>${my.hostname}/manager</cargo.tomcat.manager.url>
<cargo.remote.username>tomcat</cargo.remote.username>
<cargo.remote.password>tomcat</cargo.remote.password>
</properties>
</configuration>
<deployables>
<deployable>
<location>${project.build.directory}/${project.build.finalName}.war</location>
<type>war</type>
<properties>
<context>/${project.build.finalName}</context>
</properties>
</deployable>
</deployables>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<!-- NEED TO BE AFTER DEPLOY -->
<phase>package</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>ch.MainClass</mainClass>
<arguments>
<argument>Will be forwarded to main()</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
答案 0 :(得分:1)
我建议将cargo-maven2-plugin绑定到pre-integration-test
阶段,将exec-maven-plugin绑定到integration-test
阶段之后的package
阶段。另请参阅有关default life cycle phases。
deploy
阶段通常用于将生成的工件部署到maven存储库,因此将运行集成测试绑定到此阶段并没有多大意义。
<plugin>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<goal>xxxx</goal>
</goals>
<configuration>
....
</configuration>
</execution>
</executions>
</plugin>
以上配置可以应用于你的插件exec-maven-plugin以及cargo-maven2-plugin ......
最好的方法是将这些集成测试场景分成单独的模块,或者如果只有一个模块,则使用配置文件进行活动集成测试。