我已经建立了一个项目,使用Maven Cargo插件启动Tomcat,其中部署了我的set应用程序,以及一些需要支持的其他set应用程序。这很好用。不幸的是,当我运行"mvn cargo: run“时,它并不是首先进行构建,而是在我最后一次进行构建时实际启动Tomcat运行代码。
之前我使用的是tomcat7插件,这确实是先进行构建,并且总是运行源代码的当前版本。因此,我可以更改代码并运行"mvn tomcat7: run“,并且知道代码更改已经构建并正在运行。
我找不到任何使用Cargo插件的方法来让它做到这一点,但是Maven有什么方法可以让它在我运行特定插件时至少运行包阶段,这样它就可以首先正确地构建WAR文件了吗?
发布于 2015-07-16 22:02:48
Tomcat插件在执行自己之前会自动调用compile阶段。Cargo插件不会做到这一点。为了在执行插件之前编译代码,您需要运行
mvn clean compile cargo:run如果您希望在集成测试之前和之后自动启动和停止容器,您还可以将cargo:start和cargo:stop绑定到Maven的生命周期阶段。详情请参见Automatically executing and stopping the container when running mvn install。
发布于 2015-07-16 22:10:53
下面是一个完整的示例,如何在通常的构建中集成start via Cargo。https://github.com/khmarbaise/maui/tree/master/src/main/resources/it-example-container。您可以通过mvn -Prun-its clean verify启动集成测试,这可能更好
发布于 2015-07-23 01:58:58
一种完全不同的方法是使用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要清理、编译和运行应用程序,请执行以下操作。
https://stackoverflow.com/questions/31456104
复制相似问题