【问题标题】:No plugin goals bound to a maven phase没有插件目标绑定到 Maven 阶段
【发布时间】:2016-10-09 06:05:34
【问题描述】:

在 Maven 中相当新。通过阅读official website的maven文档,我知道在默认生命周期中,有21个阶段,包括validateinitializegenerate-sourcesprocess-sourcesgenerate-resourcesprocess-resourcescompileprocess-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, @987654342 @、installdeploy

但是当我看到Built-in Lifecycle Bindings 时,我发现没有插件目标绑定到诸如validateinitializeverify 等阶段。
因此,如果我运行命令 mvn package,是否会执行没有插件目标的阶段?
或者这些阶段的插件目标是固定的,我们无法控制它们,因此无需将它们写在文档中。每次validateinitializeverify等这些阶段都会自动执行。

【问题讨论】:

    标签: maven maven-plugin


    【解决方案1】:

    首先是的,默认情况下没有插件绑定到阶段validateinitializeverify(以及其他一些阶段)。

    如果您运行mvn package,所有阶段都将被执行,但如果没有插件绑定到某个阶段,您将看不到它。如果你运行package 阶段,包括package 阶段本身在内的所有阶段都将从头开始执行validateinitializegenerate-sources等等......

    有时将插件绑定到像initialize 这样的阶段很有用。例如build-number-maven-plugin 就是这种情况。

    verify 之前的阶段,例如 pre-integration-testintegration-testpost-integration-test,对于运行可由 maven-failsafe-plugin 处理的集成测试很有用。单元测试由maven-surefire-plugin 处理。

    generate-sources 之类的阶段通常被 jaxb2-maven-plugin 之类的源代码生成插件或注释处理器生成插件之类的其他插件使用...

    【讨论】:

    • 感谢您的回答。所以你的意思是当我运行 mvn package 时,阶段初始化也会运行,但是在这个阶段没有做任何事情,因为没有插件目标绑定到它?
    • @Frankie 在默认生命周期中没有插件绑定到initialize。但是,您的 POM 可以使用默认绑定到它的插件目标,因此它会执行。您还可以拥有另一个绑定到它的生命周期。
    • @Tunaki 好的,我明白了。 Maven 只执行插件目标。因为没有默认插件目标绑定到默认生命周期中的阶段初始化,所以我在默认生命周期中看不到这个阶段。如果我有一个要初始化插件绑定的 pom,则将执行该插件以便我可以看到阶段。阶段只是表示顺序的抽象。对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2011-04-28
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 2019-01-25
    相关资源
    最近更新 更多