首页 文章

在运行单个插件时,让maven在另一个任务之前运行一个任务

提问于
浏览
0

我已经使用Maven Cargo插件设置了一个项目来启动Tomcat,其中部署了我的webapp,以及支持所需的其他一些Web应用程序 . 这非常有效 . 不幸的是,当我运行“mvn cargo:run”时,它不首先进行构建,而是实际启动Tomcat运行代码,这是我上次构建时的代码 .

以前我使用的是tomcat7插件,而且确实首先进行了构建,并始终运行当前版本的源代码 . 因此,我可以更改我的代码并运行“mvn tomcat7:run”,并且知道代码更改已经构建并且正在运行 .

我找不到使用Cargo插件的任何方法来实现这一点,但是当我运行特定的插件时,Maven是否有某种方式使其至少运行Package阶段,以便它首先正确构建WAR文件?

3 回答

  • 0

    Tomcat插件在执行之前自动调用 compile 阶段 . Cargo插件不会这样做 . 为了在执行插件之前编译代码,您需要运行

    mvn clean compile cargo:run
    

    如果要在集成测试之前和之后自动启动和停止容器,还可以将 cargo:startcargo:stop 绑定到Maven的生命周期阶段 . 有关详细信息,请参阅Automatically executing and stopping the container when running mvn install .

  • 1

    以下是如何通过Cargo在常规构建中集成启动的完整示例 . https://github.com/khmarbaise/maui/tree/master/src/main/resources/it-example-container . 您可以通过 mvn -Prun-its clean verify 开始集成测试,这可能会更好

  • 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
    

    清理,编译和运行您的应用程序 .

相关问题