我在这里看到一些Maven概念中的“森林穿过树林”很难过。据我所知,Maven预先配置了一系列所谓的“构建生命周期阶段”,以validate
和test
开头,以deploy
结束。< / p>
我从Ant来到Maven,你将主要构建阶段组织成目标(可以线性方式依赖于其他目标),然后将目标分解为程序任务。 Maven似乎支持这一点,但是以目标的形式支持。
我的问题(因为我习惯于在目标和任务方面进行构建)是:这些生命周期阶段(package
,verify
等)如何与目标相关联?是否需要配置哪个目标在哪个阶段运行,或者是由Maven自动完成的?
或者,这些目标预先定义了它们属于哪个阶段?
我只是没有看到如何订购目标来创建适合他们或他们的组织的自定义构建。
提前感谢您的清晰度!
答案 0 :(得分:11)
许多Maven插件将特定目标(mojo)绑定到特定的生命周期阶段。
E.g。寻找documentation of maven-jar-plugin:jar
goal。它说:
默认绑定到生命周期阶段:package。
此外,生命周期本身正在指定每个阶段需要运行的工具。对于默认的包装类型,这些工具由Maven预定义并在此解释 - &gt; http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings
但是这个例子展示了如何创建完全自定义的生命周期绑定 - &gt; 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
答案 1 :(得分:0)
Maven具有3个生命周期,这些生命周期又在许多阶段(打包,验证等)执行。在执行这些阶段时,它也会调用先前的阶段。
目标是单独的任务。调用该特定任务时,将执行该特定任务。 查看下面的博客以获取更多详细说明。 https://techytopics.wordpress.com/maven-simplified/