《Maven权威指南》学习笔记二十一_构建生命周期
《Maven权威指南》学习笔记二十一_构建生命周期
SimpleClean 发表于4年前
《Maven权威指南》学习笔记二十一_构建生命周期
  • 发表于 4年前
  • 阅读 907
  • 收藏 10
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 一下子过去一年了,捡一捡吧!

解释:

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

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仓库,更新一些可能被此次部署影响的仓库信息。这里详细暂不讨论。



标签: maven 生命周期
共有 人打赏支持
粉丝 21
博文 29
码字总数 12570
×
SimpleClean
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: