我一直在尝试理解 Maven 的概念,但我发现很难理解所使用的术语。
我遇到了这个词“ build life cycle mapping
”。有人可以让我清楚地了解这个术语的含义吗?我知道是什么build life cycle
,但是当我们使用“ mapping
”时它是什么意思?
提前感谢您的帮助
更新:这是我找到这个术语的地方-项目构建生命周期映射
我一直在尝试理解 Maven 的概念,但我发现很难理解所使用的术语。
我遇到了这个词“ build life cycle mapping
”。有人可以让我清楚地了解这个术语的含义吗?我知道是什么build life cycle
,但是当我们使用“ mapping
”时它是什么意思?
提前感谢您的帮助
更新:这是我找到这个术语的地方-项目构建生命周期映射
我建议您从Maven 官方网站上的这篇文章开始。
简而言之,每个项目根据其打包有许多阶段和一些绑定到这些阶段的默认插件,这些插件在构建期间执行。例如,在compile
阶段maven-compiler-plugin
编译位于的所有源src/main/java
(如果没有另外指定)。如果插件未绑定到默认生命周期(例如,它是一些自定义插件),那么您必须将其包含在构建中并将其映射到自己的某个特定阶段(第二个是可选的,因为大多数自定义插件都有其目标的默认映射到某些特定阶段,例如默认jspc-maven-plugin
将其目标绑定compile
到compile
生命周期的阶段)。
因此,此上下文中的映射指定在项目构建的每个阶段执行哪个插件-目标对。
好的,如您所知,Maven 提供了一种构建生命周期,即阶段序列,从验证 POM、生成源(如果需要)或编译类等基本内容开始,最后将内容安装到本地存储库并在远程存储库上部署工件。重要的是,这是一个顺序,所以这里的顺序很重要。如果您调用某个阶段(比方说install
),那么从头到尾的所有阶段都会install
一个接一个地执行。
现在,这些生命周期的阶段是关于构建每个软件项目需要执行哪些步骤的一些一般概念,正如我们通常认为的那样。如您所知,软件工件可以具有许多不同的性质,因此需要在每个阶段完成非常具体的工作。这就是生命周期映射。它是生命周期阶段和具体插件目标之间的绑定,特定于工件的性质(这意味着packaging
在 Maven 世界中)。
因此,例如,jar
包装的这个映射说我们需要maven-compiler-plugin:compile
在compile
阶段调用,但ear
包装说我们不需要在它的compile
阶段调用任何东西。在这里查看更多示例。