购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2.4 使用构建生命周期来设置项目

构建生命周期足够简单,但是当需要为项目配置Maven构建时,如何将任务分配到每个构建阶段呢?

1.打包

第一种也是常见的方法是通过同样命名的POM元素<packaging>为项目设置打包。一些有效的打包值是JAR、WAR、EAR和POM。如果没有指定包装值,就默认为JAR。

每个不同类型的打包都包含要绑定到特定阶段的目标列表。例如打包值是JAR,将绑定表2-1所示的目标来构建默认生命周期的阶段。

表2-1 打包值是JAR所绑定的目标

可以这么理解,阶段列是简化的命令,插件:目标列是详细的插件加目标(命令行参数)的形式。需要注意的是,Maven都是以插件的形式存在的,包括生命周期的阶段也是一个个不同的插件组成的,比如compile阶段就是由compiler插件提供的,其中compile为这个插件的目标,也可以说是插件的命令行参数。

不同的打包方式所要绑定的阶段是不同的。例如,纯粹的元数据(打包值是POM)的项目只将目标绑定到install和deploy阶段。

注意,对于某些可用的打包类型,可能还需要在POM的<build>部分包含一个特定的插件,并为该插件指定<extensions>true</extensions>。需要这种插件的一个例子是Plexus插件,它提供plexus-application和plexus-service打包。

2.插件

将目标添加到阶段的第二种方法是在项目中配置插件。插件是为Maven提供目标的工件。此外,插件可以具有一个或多个目标,其中每个目标代表该插件的能力。例如,compiler插件有两个目标:compile和testCompile。前者编译主代码的源代码,后者编译测试代码的源代码。

插件可以包含指示将目标绑定到的生命周期阶段的信息。注意,只添加插件是不够的,还必须要指定目标。如果有多个目标绑定到特定阶段,则使用的顺序是首先执行来自打包的顺序,然后才是在POM中配置顺序。注意,可以使用<executions>元素来获得对特定目标的顺序更多的控制。

例如,Modello插件默认将目标modello:java绑定到generate-sources阶段(注意:modello:java目标生成Java源代码)。因此,要使用Modello插件,从模型生成的源代码并将其合并到构建中,配置如下:

现在,在modello:java的情况下,它只在generate-sources阶段才有意义。但是一些目标可以在多个阶段中使用。例如,假设有一个目标display:time,希望它在process-test-resources阶段运行时开始执行,则可以被配置如下: QYcMiSAO68ycXKo1hr5tBuiIKxH+/HJd+F0aKYrcTkC8qtPmF6LfMK/Q9zB9G7dS

点击中间区域
呼出菜单
上一章
目录
下一章
×