【问题标题】:Make maven run one task before another when running a single plugin在运行单个插件时,让 maven 在另一个任务之前运行一个任务
【发布时间】:2015-10-06 00:15:38
【问题描述】:

我已经使用 Maven Cargo 插件设置了一个项目来启动 Tomcat,其中部署了我的 web 应用程序,以及一些其他需要支持的 web 应用程序。这很好用。不幸的是,当我运行“mvn cargo:run”时,它并没有先进行构建,而是在我上次构建时实际启动 Tomcat 运行代码。

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

我无法通过 Cargo 插件找到任何方法来做到这一点,但是当我运行特定插件时,Maven 是否可以通过某种方式使其至少运行 Package 阶段,以便构建 WAR 文件首先正确?

【问题讨论】:

    标签: maven maven-3 maven-cargo


    【解决方案1】:

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

    mvn clean compile cargo:run
    

    如果您想在集成测试前后自动启动和停止容器,您还可以将 cargo:startcargo:stop 绑定到 Maven 的生命周期阶段。详情请见Automatically executing and stopping the container when running mvn install

    【讨论】:

    • 我知道你能做到。当我不需要为 Tomcat7 做这些时,我需要为 Cargo 做这件事,这有点令人沮丧。
    • 这就是 Maven Cargo 插件的工作方式。开发人员显然选择了 Tomcat7 插件之外的其他路径。
    【解决方案2】:

    这里是一个完整的例子,如何将通过 Cargo 的 start 集成到通常的构建中。 https://github.com/khmarbaise/maui/tree/master/src/main/resources/it-example-container。您可以通过mvn -Prun-its clean verify 开始集成测试,这可能会更好

    【讨论】:

    • 我不希望它用于集成测试。我希望它启动容器,以便我可以在浏览器中实际进行手动测试。这一切都很好。它只是不会先重建 WAR 文件。
    【解决方案3】:

    一种完全不同的方法是使用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
    

    清理、编译和运行您的应用程序。

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 2022-07-11
      相关资源
      最近更新 更多