我已经使用Maven Cargo插件设置了一个项目来启动Tomcat,并在其中部署了我的webapp,以及支持所需的其他一些Web应用程序。这非常有效。不幸的是,当我运行“mvn cargo:run”时,它不首先进行构建,而是实际启动Tomcat运行代码,这是我上次进行构建时。
之前我使用的是tomcat7插件,而且它确实首先进行了构建,并始终运行当前版本的源代码。因此,我可以更改我的代码并运行“mvn tomcat7:run”,并且知道代码更改已经构建并且正在运行。
我找不到Cargo插件的任何方法来实现这一点,但是当我运行一个特定的插件时,它是否有一些方法让Maven至少运行Package阶段以便它将构建WAR文件先正确吗?
答案 0 :(得分:1)
Tomcat插件在执行之前自动调用compile
阶段。 Cargo插件不会这样做。为了在执行插件之前编译代码,您需要运行
mvn clean compile cargo:run
如果要在集成测试之前和之后自动启动和停止容器,还可以将cargo:start
和cargo:stop
绑定到Maven的生命周期阶段。有关详细信息,请参阅Automatically executing and stopping the container when running mvn install。
答案 1 :(得分:0)
以下是如何通过Cargo在常规版本中集成启动的完整示例。 https://github.com/khmarbaise/maui/tree/master/src/main/resources/it-example-container。您可以通过mvn -Prun-its clean verify
开始集成测试,这可能会更好
答案 2 :(得分:0)
完全不同的方法是使用exec-maven-plugin
通过一个命令执行多个目标:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<executable>mvn</executable>
<arguments>
<argument>clean</argument>
<argument>compile</argument>
<argument>cargo:run</argument>
</arguments>
</configuration>
</plugin>
<!-- more plugins... -->
</plugins>
</build>
这样,你只需要打电话
mvn exec:exec
清理,编译和运行您的应用程序。