【问题标题】:Maven: Relationship between Lifecycle Phase & GoalMaven:生命周期阶段和目标之间的关系
【发布时间】:2011-12-23 17:22:21
【问题描述】:

我很难在这里看到一些 Maven 概念中的“森林穿过树木”。我知道 Maven 预配置了一系列所谓的“构建生命周期阶段”,它们以 validatetest 开头并以 deploy 结尾。

我从 Ant 来到 Maven,在那里您将主要的构建阶段组织成目标(可以以线性方式依赖于其他目标),然后您将目标分解为过程任务。 Maven 似乎支持这一点,但是以 goals 的形式。

我的问题(因为我习惯于根据目标和任务来考虑构建)是:这些生命周期阶段(packageverify 等)如何与目标相关联?是否需要配置在哪个阶段运行哪些目标,或者这是否由 Maven 以某种方式自动完成?

或者,这些目标是否在它们所属的阶段预先定义?

我只是没有看到一个人如何订购目标来创建适合他们或他们的组织的自定义构建。

提前感谢您的澄清!

【问题讨论】:

  • 参见my answer to Maven:生命周期 vs. 阶段 vs. 插件 vs. 目标,了解命名实体的全部内容。

标签: apache maven


【解决方案1】:

许多 Maven 插件将特定目标 (mojo) 绑定到特定生命周期阶段。

例如寻找documentation of maven-jar-plugin:jar goal。它说:

默认绑定到生命周期阶段:包。

此外,生命周期本身指定每个阶段需要运行哪些工具。对于默认打包类型,这些工具由 Maven 预定义并在此处解释 -> http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings

但是这个例子展示了如何创建完全自定义的生命周期绑定 -> http://www.sonatype.com/people/2009/08/create-a-customized-build-process-in-maven/。如您所见,您可以将任何插件目标组合绑定到特定的生命周期阶段。

最后但同样重要的是,您可以通过 pom 文件的 build/plugins 元素手动添加插件执行。如果你这样做,特定阶段的插件将按 FIFO 顺序执行。

此外,查看Effective POM 以及所有这些默认值可能对您有所帮助。许多 IDE 为 Maven 项目提供此选项,但您也可以从命令行查看有效的 pom:

mvn help:effective-pom

【讨论】:

    【解决方案2】:

    Maven 有 3 个生命周期,它们依次在多个阶段(打包、验证等)执行。当这些阶段被执行时,它也会调用之前的阶段。

    目标是个人的任务。当它被调用时,该特定任务将被执行。 查看以下博客以获取更详细的说明。 https://techytopics.wordpress.com/maven-simplified/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-23
      • 2014-12-25
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      • 2016-08-05
      相关资源
      最近更新 更多