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