Maven:生命周期vs.阶段vs.插件vs.目标
这里的开发人员相对较新,尽管我已经使用了一段时间,但我希望巩固我的Maven基础。我的部分问题是我对Ant没有经验,这似乎是许多解释的根源。我一直在阅读和观看教程,我不断听到相同的术语:Maven:生命周期vs.阶段vs.插件vs.目标,maven,maven-3,pom.xml,maven-lifecycle,Maven,Maven 3,Pom.xml,Maven Lifecycle,这里的开发人员相对较新,尽管我已经使用了一段时间,但我希望巩固我的Maven基础。我的部分问题是我对Ant没有经验,这似乎是许多解释的根源。我一直在阅读和观看教程,我不断听到相同的术语: 生命周期 阶段 插件 目标 据我所知,生命周期似乎是最广泛的,由(或由)阶段、插件和/或目标组成 问题:您能否提供这些术语的相关信息以及最常见的示例 越明确、越基本越好 因此,请进一步解释概述 Maven构建在生命周期中进行划分,这些生命周期包括: 干净的 生成(默认) 场地 每个周期分为几个阶段。 例
- 生命周期
- 阶段
- 插件
- 目标
越明确、越基本越好 因此,请进一步解释概述 Maven构建在生命周期中进行划分,这些生命周期包括:
- 干净的
- 生成(默认)
- 场地
- 准备资源
- 编撰
- 包装
- 安装
- 预清洁-将在清洁阶段之前执行
- 后清洁-将在清洁阶段后执行
mvn
时,Maven会通过所有阶段(每次),并执行所有目标(由插件提供),这些目标在给定阶段之前和之前(包括)已绑定到任何阶段。如果有一个没有目标约束的阶段,那么什么也做不了。但这一阶段已经过去
也就是说,您不能在Maven的内置生命周期中“插入”其他阶段。他们已经在那里了,永远!您可以使用自己的阶段开发自己的生命周期,但这远远超出了简单地使用Maven的范围
也可以直接执行目标,当运行mvn
时,您会被告知目标,而无需任何阶段或(插件:)目标[此处有换行符并缩短以便于阅读]:
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,构建生命周期简介
参考资料
/lib/Maven-core-x.y.z.jar/META-INF/plexus/default bindings.xml
内置生命周期(干净、默认、站点)的阶段在../org.apache.maven.lifecycle.lifecycle
下声明
plugin-artifactId:plugin-version:plugin-goal (goal-execution-id) @ project-name
例如,我们将有:
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ sample-project ---
这确实意味着(通过不同的粒度级别):
- 在该阶段(不幸的是,仅在
下提到调试的反应堆建造计划-任务:[……]
)→李>mvn-X…
- 我正在调用Maven编译器插件(由
和artifactId
指定)及其目标→李>version
- 由
和执行
id
默认编译定义
maven编译器插件
,也在(不同阶段)中使用,以在不同的执行(defaulttestcompile
)中编译测试代码(通过其目标)。您还可以(使用相同的插件和目标)在不同的阶段编译一些自动生成的代码,这些阶段由您在POM中指定的执行(以及可能的不同配置)定义
默认执行是通过开箱即用的方式提供的,也就是说,默认情况下(在配置上强制约定),Maven已经在某些阶段调用了某些目标(标准插件)。这些默认调用的执行ID是根据定义的
这也解释了为什么如果你
mvn compiler:compile
mvn compiler:testCompile
mvn surefire:test
mvn jar:jar
mvn clean
mvn clean:clean
mvn clean
mvn pre-clean clean:clean