《Maven权威指南》学习笔记二十一_构建生命周期

解释:

一个生命周期由若干个生命周期阶段组成,每个生命周期阶段绑定注册若干个目标,可人为注册目标到指定处。

Maven具有三种标准的生命周期:clean、default(构建)、site。

构建:

构建一个生命周期则完整的按序执行每个阶段的目标;构建一个生命周期阶段则按序执行不越过这个阶段的所有目标。

clean

包含3个生命周期阶段:pre-clean, clean, post-clean

自定义clean插件的行为:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
< build >
     < plugins >
       < plugin >
         < artifactId >maven-clean-plugin</ artifactId >
         < configuration >
           < filesets >
             < fileset >
               < directory >target-other</ directory >
               < includes >
                 < include >*.class</ include >
               </ includes >
             </ fileset >
           </ filesets >
         </ configuration >
       </ plugin >
     </ plugins >
   </ build >

default

默认生命周期阶段描述表(按序):

序号

生命周期阶段

描述

1

validate

验证项目一些必要的信息

2

generate-sources

生成编译过程需要的源代码

3

process-sources

处理源代码

4

generate-resources

生成打包需要的资源文件

5

process-resources

复制并处理资源文件至目标目录

6

compile

编译源代码

7

process-classes

后处理字节码文件

8

generate-test-sources

9

process- test-sources

10

generate- test-resources

11

process- test-resources

12

test-compile

13

test

使用单元测试框架运行测试

14

prepare-package

打包前准备操作

15

package

编译好的代码打包成可分发的格式

16

pre-integration-test

集成测试运行前操作

17

integration-test

集成测试

18

post-integration-test

集成测试后操作

19

verify

检查

20

install

安装到本地仓库

21

deploy

发布到远程仓库

 site

生成项目文档和报告站点的专有的生命周期。

包含4个阶段:pre-site, site, post-site, site-deploy

默认绑定到站点生命周期的阶段目标是:site阶段绑定site:sitesite-deploy阶段绑定site:deploy

 

不同打包方式下的生命周期

1, jar packaging

默认打包类型,默认打包目标有:

生命周期阶段                           目标

process-resources                resources:resources

compile                               compiler:compile

process-test-resources         resources:testResources

test-compile                        compiler:testCompile

test                                    surefire:test

package                              jar:jar

install                                 install:install

deploy                                deploy:deploy

 

2, pom packaging

生成的构件只是它本身,默认打包目标有:

生命周期阶段                           目标

package                     site:attach-descriptor

install                        install:install

deploy                       deploy:deploy

 

3, war packaging

生命周期阶段                           目标

process-resources                resources:resources

compile                               compiler:compile

process-test-resources          resources:testResources

test-compile                         compiler:testCompile

test                                     surefire:test

package                               war:war

install                                  install:install

deploy                                 deploy:deploy

 

4, 其他打包类型

maven plugin, ear, ejb, swf, swc, nar等。

可自定义打包类型,自定义打包类型需要配置定义了定制打包类型生命周期的插

件,如为Adobe Flex (SWF)定制打包类型:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
< project >
   ...
   < packaging >swf</ packaging >
   ...
   < build >
     < plugins >
       < plugin >
         < groupId >net.israfil.mojo</ groupId >
         < artifactId >maven-flex2-plugin</ artifactId >
         < version >1.4-SNAPSHOT</ version >
         < extensions >true</ extensions >
         < configuration >
           < debug >true</ debug >
           < flexHome >${flex.home}</ flexHome >
           < useNetwork >true</ useNetwork >
           < main >org/sonatype/mavenbook/Main.mxml</ main >
         </ configuration >
       </ plugin >
     </ plugins >
   </ build >
   ...
</ project >

通用生命周期目标

resources:resources 

默认绑定到process-resources阶段,默认行为是将src/main/resources下的资源文件复制到target/classes下,且会应用资源过滤器

资源过滤:即资源变量替换。可以再xml资源文件中使用${}引用properties配置文件属性值,要想正常使用,还要再POM文件增加资源过滤配置(属性替换)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
< em >< build >
    < filters >
      < filter >src/main/filters/default.properties</ filter > 属性配置文件
    </ filters >
    < resources >
      < resource >
        < directory >src/main/resources</ directory >
        < filtering >true</ filtering >  过滤开关,只有打开才会替换变量
      </ resource >
 
      从这里可以看出,可以配置额外的资源目录,如
 
      < resource >
       < directory >src/main/xml</ directory >
       < includes >< include >文件名</ include ></ includes >
       < targetPath >目标路径,默认为target/classes</ targetPath >
     </ resource >
    </ resources >
  </ build ></ em >

compile:compile

默认绑定到compile阶段,默认行为是编译所有源代码并在构建输出目录存放编译后文件。默认源目录:src/main/java,默认目标目录:target/classes,默认source1.3,默认target1.1

?
1
2
3
4
5
6
7
8
9
10
11
12
13
< em >< build >
     ...
     < plugins >
       < plugin >
         < artifactId >maven-compiler-plugin</ artifactId >
         < configuration > <!---->
           < source >1.5</ source >
           < target >1.5</ target >
         </ configuration >
       </ plugin >
     </ plugins >
     ...
   </ build ></ em >

process-test-resources

处理单元测试资源。

test-compile

单元测试编译阶段。目标:compile:testCompile,默认输出目录以及自定义方式类同compile阶段。

Test

大部分生命周期绑定Surefire插件的test目标至test阶段。默认情况下单元测试失败后停止构建,我们可以覆盖这种行为,让构建继续进行(或者直接跳过测试阶段 –Dmaven.test.skip=true):

?
1
2
3
4
5
6
7
8
9
10
11
12
< em >< build >
   < plugins >
     < plugin >
       < groupId >org.apache.maven.plugins</ groupId >
       < artifactId >maven-surefire-plugin</ artifactId >
      < configuration >
        < testFailureIgnore >true</ testFailureIgnore >
      </ configuration >
     </ plugin >
     ...
   </ plugins >
</ build ></ em >

Install

Install插件的install目标基本上都是绑定到install生命周期阶段。install:install目标将项目的主要构件安装到本地仓库。

Deploy

Deploy插件的deploy目标通常绑定到deploy生命周期阶段。该阶段将一个构件部署到远程Maven仓库,更新一些可能被此次部署影响的仓库信息。这里详细暂不讨论。


原文地址: http://my.oschina.net/4my1986/blog/201100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值