文档章节

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

SimpleClean
 SimpleClean
发布于 2014/02/19 11:19
字数 1196
阅读 934
收藏 10

解释:

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

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

构建:

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

clean

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

自定义clean插件的行为:

<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)定制打包类型:

<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文件增加资源过滤配置(属性替换)。

<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>

compile:compile

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

<build>
    ...
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration><!---->
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>

process-test-resources

处理单元测试资源。

test-compile

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

Test

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

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
     <configuration>
       <testFailureIgnore>true</testFailureIgnore>
     </configuration>
    </plugin>
    ...
  </plugins>
</build>

Install

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

Deploy

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



© 著作权归作者所有

共有 人打赏支持
SimpleClean
粉丝 20
博文 30
码字总数 12570
作品 0
宁波
程序员
《maven权威指南》学习笔记(更新中)

转自:http://macrochen.javaeye.com/blog/357308 maven=构建工具+依赖管理+项目生命周期管理 什么是maven插件的目标? maven插件相当于一个功能集合, 而目标就是这个功能集合中的一个子功能(...

肥皂泡2
2011/06/16
0
0
《Maven权威指南》学习笔记十七_一个多模块项目

场景:父模块包含两个子模块,子模块2依赖子模块1。 父模块POM配置如下例: [...] <packaging>pom</packaging>[...]<modules> </modules><build> </pluginManagement></build>[...]像这样如果......

SimpleClean
2013/03/28
0
0
分享26本关于Jquery的学习书籍(免费下载)

分享26本关于Jquery的学习书籍(免费下载) 1、精通JavaScript+jQuery 2、网友small6分享锋利的jQuery实例源码 3、网友small6分享jQuery权威指南配套源代码 4、犀利开发jQuery内核详解与实践...

邓剑彬
2012/11/30
3.2K
8
基于maven的ssh框架一步一步搭建(二)

五、配置profile 1、profile是用来做什么的 Profile能让你为一个特殊的环境自定义一个特殊的构建;profile使得不同环境间构建的可移植性成为可能。不同的构建环境是什么意思?构建环境的两个...

漂泊者及其影子
2014/07/16
3.6K
0
《Maven权威指南》学习笔记二十_关于POM

英文:Project Object Model;中文:项目对象模型。 项目版本 主版本.次版本.增量版本.限定版本号: <major version>.<minor version>.<incremental version>-<qualifier>一个版本“5”只有主......

SimpleClean
2013/04/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

中国移动蔡谦:5G传输准备就绪

目前5G已成业界热议话题,在即将到来的万物互联时代,5G是非常关键的技术。且5G相比4G,业务场景多种多样,对5G承载网带来巨大挑战。5G传输,承载先行并不仅仅是一个口号。当前5G承载网的部署...

linux-tao
32分钟前
4
0
维护“修理权”,苹果使用专有软件工具来修复MacBook Pro和iMac Pro

根据上月发给苹果授权服务提供商的一份文件,苹果公司正在使用新的专有软件诊断工具来修复MacBook Pros和iMac Pros,如果不用专有软件工具来修复关键部件,将会导致“系统失效和修复不完整”...

linuxCool
今天
2
0
cacti监控安装

cacti是用PHP实现的一个软件,它用snmp服务获取数据,然后用rrdtool存储和更新数据,并生成图表展示。比较适合用于交换机、路由器的网络监控,插件众多,可图示化显示网络状况。 cacti官方推...

hiwill
今天
4
0
shell特殊符号、cut、sort、uniq、wc、tee、tr、split命令

10月15日任务 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 cut 命令 cut作用:截取字符串 用法如下:cat /etc/passwd |head -2 |cut -d ...

hhpuppy
今天
4
0
Springboot实现filter拦截token验证和跨域

背景 web验证授权合法的一般分为下面几种 1使用session作为验证合法用户访问的验证方式 使用自己实现的token 使用OCA标准 在使用API接口授权验证时,token是自定义的方式实现起来不需要引入其...

funnymin
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部