【问题标题】:maven execution of plugin goal?插件目标的Maven执行?
【发布时间】:2015-03-15 12:08:17
【问题描述】:

我是 Maven 新手,正在学习如何以及何时在插件中执行阶段/目标

假设我的 pom 中有以下代码 sn-p

 <plugin>
   <groupId>org.codehaus.modello</groupId>
   <artifactId>modello-maven-plugin</artifactId>
   <version>1.4</version>
 </plugin>

现在,如果我执行 mvn install,将执行安装之前的 modello 的所有阶段(以及与每个阶段对应的所有目标)。 对吗?

但是如果做下面的修改来引入特定的目标,只会执行一个目标,即java目标 (因为它在generate-sources 阶段之前,在install 阶段之前)。 正确吗?

 <plugin>
   <groupId>org.codehaus.modello</groupId>
   <artifactId>modello-maven-plugin</artifactId>
   <version>1.4</version>
   <executions>
     <execution>
       <goals>
         <goal>java</goal>
       </goals>
     </execution>
   </executions>
 </plugin>

【问题讨论】:

    标签: java maven


    【解决方案1】:

    不,它不是那样工作的。首先,请使用mvn verify(而不是安装),除非您真的希望将您的项目复制到本地存储库。

    如果你只指定一个插件,它不是默认生命周期的一部分(例如 maven-compiler-plugin 已经为默认生命周期指定,所有 jars 都需要编译,对吗?),什么都不会发生。因此,您需要指定需要在执行块中执行哪些目标。在某些情况下,目标具有要绑定的默认阶段,例如modello:java 默认绑定到 generate-sources 阶段。在这种情况下,您不必在执行块中指定 &lt;phase&gt;

    【讨论】:

    • 谢谢罗伯特。但是我如何验证插件是否是默认生命周期的一部分?例如:-我没有在modello docs下找到它?另一个例子是我可以在我的 pom 中找到 maven-checkstyle-plugin 的条目,但没有找到任何目标元素。它是默认生命周期的一部分吗?
    • 第二点是如果我需要执行一个插件的两个目标,我需要指定两个执行元素吗?
    • 每个包装类型,一组插件绑定到特定阶段。 maven.apache.org/guides/introduction/… 底部有一个概述。
    • 执行块允许多个目标,因此您不必这样做,除非您不喜欢它们所绑定的阶段。
    • 罗伯特的最后一个问题非常重要。我在maven.apache.org/surefire/maven-surefire-plugin/usage.html 遇到了 sunfire 插件的用法。我看到了,使用示例中没有提到目标。它说“可以通过调用构建生命周期的测试阶段来调用 Surefire 插件”这是否意味着我们可以在 POM 中指定没有目标的插件条目。在调用 mvn 阶段(在本例中为 mvn 测试)时,绑定到测试阶段的 sunfire 插件的目标将自动执行?
    猜你喜欢
    • 2019-07-09
    • 2017-02-22
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 2021-04-22
    相关资源
    最近更新 更多