Maven:“构建生命周期映射”意味着什么

时间:2012-07-09 07:57:11

标签: java maven maven-plugin maven-3 mojo

我一直在努力理解Maven的概念,我发现很难理解所使用的术语。

我遇到了这个词“build life cycle mapping”。谁能让我清楚地看到这个术语的含义?我知道build life cycle是什么,但是当我们使用“mapping”时它意味着什么?

提前感谢您提供任何帮助

更新:这是我找到这个词的地方 - Project build lifecycle mapping

2 个答案:

答案 0 :(得分:1)

我建议您从Maven官方网站上的this article开始。

简单来说,每个项目取决于它的包装都有许多阶段和许多绑定到这些阶段的默认插件,这些插件在构建期间执行。例如,在compile阶段maven-compiler-plugin期间编译src/main/java中的所有来源(如果没有另外指定)。如果插件没有绑定到默认生命周期(例如,它是一些自定义插件),那么你必须将它包含在构建中并自己将其映射到某个特定阶段(第二个是可选的,因为大多数自定义插件都有他们目标的默认映射某些特定阶段,例如jspc-maven-plugin默认情况下将其目标compile绑定到生命周期的compile阶段。

因此,在此上下文中的映射指定在项目构建的每个阶段执行哪个插件 - 目标对。

答案 1 :(得分:1)

好的,如你所知,Maven提供了一种构建生命周期,即阶段序列,从诸如验证POM,生成源(如果有需要)或编译类等基本内容开始,最后安装填充到本地存储库并在远程存储库上部署工件。重要的是,这是一个序列,所以顺序在这里很重要。如果你调用某个阶段(让我们说install),那么从开头到install的所有阶段都会一个接一个地执行。

现在,这些生命周期的阶段是关于每个软件项目需要执行哪些步骤来构建的一般概念,正如我们通常认为的那样。如您所知,软件工件可以具有许多不同的性质,因此需要在每个阶段完成特定的工作。这就是生命周期映射。它在生命周期的阶段和具体的插件目标之间具有约束力,这些目标特定于工件的本质(在Maven世界中意味着packaging)。

因此,例如,jar打包的此映射表示我们需要在maven-compiler-plugin:compile阶段调用compile,但ear打包说我们需要调用任何内容在compile阶段。查看here了解更多示例。