繁体   English   中英

如何将多个插件执行作为 Maven 的单个参数运行?

[英]How to run multiple plugin executions as a single argument to Maven?

是否可以在一个 maven 命令上运行所有<execution>定义?

喜欢:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>first-execution</id>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.mycompany.FooServer</mainClass>
                    </configuration>
                </execution>
                <execution>
                    <id>second-execution</id>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.mycompany.BarServer</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
     </plugins>
 </build>

我可以运行mvn exec:java@first-execution exec:java@second-excution来运行两者,但是是否还有一个 maven 命令来简单地告诉 maven 运行定义中找到的任何<execution>

或者至少,所有匹配<goal>的执行?

不可能,也不计划作为一项功能 根据 Maven 项目负责人 Robert Scholte 的说法:

Maven 是生命周期驱动的。 能够从命令行执行目标是一项功能,但我认为不需要执行所有可用的 exeucutionId。

不要尝试将 maven 用作通用脚本工具 - 它的座右铭是“约定优于配置”。

如果您的构建需要执行外部可执行文件或 Java 代码,您可以将执行绑定到 maven阶段,如下所示:

<execution>
  <id>first-execution</id>
  <goals>
    <goal>java</goal>
  </goals>
  <phase>compile</phase>
  <configuration>
    <mainClass>com.mycompany.FooServer</mainClass>
  </configuration>
</execution>

如果你用mvn compile调用它,那么绑定到这个阶段的所有执行(以及到这个阶段的所有其他阶段)都将被执行。 通常按照 ID 的顺序排列,因此您可能希望将 ID 设置为类似01-first02-second03-aaaa-third

配置maven插件的更多信息,参见官方文档

对于存在哪些阶段以及它们执行的顺序(以及在哪个生命周期中)的参考,还有一个很好的官方文档: Lifecycle Reference

请注意,一些插件是默认配置的,并且默认情况下也将多个执行绑定到阶段(这就是为什么例如mvn compile编译 Java 代码而无需编译器插件的任何配置)。

另一种选择是切换到另一个具有不同理念的构建工具,比如Apache Ant - 它没有很好地包含依赖管理,但甚至可以从 maven 调用。或者使用基于 Groovy 构建的 DSL 的Gradle 构建工具或 Kotlin 作为配置,这样你就可以有一个非常灵活的配置(但不要在那里做,否则你会在你写完几个月后不理解你自己的构建配置;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM