当前位置: 首页 > 知识库问答 >
问题:

Maven:生命周期vs.阶段vs.插件vs.目标[已关闭]

孟建木
2023-03-14

相对较新的开发人员,尽管我已经使用了一段时间,但我希望能巩固我的Maven基础。我的部分问题是我没有使用Ant的经验,这似乎是许多解释的来源。我一直在阅读和观看教程,我不断听到相同的术语:

  • 生命周期
  • 相位
  • 插件
  • 目标

从我所学到的东西来看,生命周期似乎是最广泛的,由阶段、插件和/或目标组成(或完成)。

问:你能提供一些关于这些术语是如何联系的信息和最常见的例子吗?

越明确越基本越好!

共有1个答案

许琛
2023-03-14

Maven生命周期是一个(抽象的)概念,它涵盖了项目开发生命周期中预期发生的所有步骤(或者更好地说:Maven设计人员决定支持的所有步骤)。这些步骤(或阶段)在Maven术语中称为阶段。

Maven插件是目标的容器/供应商。在目标中实现的代码才是真正的工作人员。(Maven在其核心本身只是管理插件和执行目标)。插件的每个目标都可以分配/绑定到任何一个生命周期阶段。

在调用mvn 时,Maven(每次)通过所有阶段,并执行所有目标(由插件提供),这些目标已经绑定到给定阶段之前的任何阶段(包括给定阶段)。如果有一个阶段没有目标,就什么也不做。但这一阶段还是过去了。

目标也可以直接执行,在运行mvn时,您会了解到这一点,而不需要任何阶段或(plugin:)目标[为了便于阅读,这里使用了换行符并缩短了时间]:

You must specify a valid lifecycle phase or a goal in the format

<plugin-prefix>:<goal> or

<plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>.

Available lifecycle phases are:

...

...参见实际输出或Maven,下面参考的构建生命周期介绍。

参考文献

    null

内置生命周期的阶段(clean、default、site)在 maven="" installation=""> /lib/maven-core-x.y.z.jar/meta-inf/plexus/components.xml 中的.../ / org.apache.Maven.lifecycle.lifecycle 下声明。

  • Maven:完整的参考资料,第4章。生成生命周期
  • Maven示例,3.5。核心概念
 类似资料:
  • maven目标和阶段之间的区别/联系是什么? 另一个说: 您不能调用生命周期阶段本身,但可以调用与生命周期阶段绑定的插件的目标。

  • 我试图理解maven目标执行顺序。 所以我有一个pom附加目标到阶段的maven生命周期构建。 当运行我得到的输出如输出部分所示: 现在我的问题是: 1为什么执行的目标,因为我已经附加了哪个目标运行那么我的目标是否被添加到maven的默认目标列表中,或者它可以被覆盖?maven如何决定执行哪个目标? 2在插件部分,我只有和,但没有。那么maven是如何找到正确的插件的呢。。groupId不是必需的

  • 来自Jigsaw项目: 使开发人员更容易为Java SE和EE平台构建和维护库和大型应用程序。 我正在尝试了解什么是Jigsaw项目,到目前为止,Jigsaw项目的目标似乎与我们使用Maven(或Gradle)依赖关系管理所做的有些重叠: 构建像Maven这样的工具是一种威胁吗

  • 这在我做项目的笔记本电脑上工作,而在另一台笔记本电脑上抛出一个错误。错误代码为 格式:或:[:]:.可用的生命周期阶段有:验证、初始化、生成源、过程源、生成资源、过程资源、编译、过程类、生成测试源、过程测试源、生成测试资源、过程测试资源、测试编译、过程测试类、测试、准备包、包、集成前测试、集成测试、集成后测试、验证、安装、部署、预清理、清理、清理后、站点前、站点后、站点部署。->[帮助1][ERR

  • 我已经用maven创建了一个java项目。在我的项目(src/main/resources下)中,有一些资源文件我想复制到目标/类中。 我在pom xml中添加了以下行: 当我运行mvn资源时:通过命令行获取的资源文件正在复制到目标/类中(因此生命周期中的资源阶段正在工作)。然而,当我在cmd中输入mvn install:install时,资源文件并没有被复制到目标/类中。 我得到: 生命周期中的

  • 几个月来,我一直在使用IntelliJ IDEA Community 2018.1,严格来说就是Java和Groovy项目。我刚开始导入我的第一个(有史以来)Scala/Gradle项目,当它加载时,我注意到IDE并没有真正“加载”Scala源代码(编译它们等等)。如果我打开一个Scala源文件,它只是在“文本编辑器模式”下出现,如果我写了一行代码,这是一个明显的编译器错误,IntelliJ根本没