Maven学习笔记3-生命周期与插件

Maven生命周期

Maven对一个项目的构建过程进行了抽象和统一,由此形成的Maven生命周期具体包括项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等。Maven的生命周期是抽象的,其具体任务由插件完成。

三套生命周期

Maven拥有三套独立的生命周期,每个生命周期都不同的阶段。用户执行某一个生命周期的某一阶段时,会先执行该周期中该阶段之前的所有阶段,但对其他周期不产生任何影响。

clean生命周期

目的是清理项目,包含三个阶段

  1. pre-clean执行清理前的准备工作
  2. clean清理上一次构建生成的文件
  3. post-clean执行清理后的善后工作

default生命周期

定义构建的核心步骤,包含N多阶段,现只列出重要阶段:

  1. process-sources 处理项目的主要资源文件,通常对src/main/resources里的内容处理后,复制到项目输出的主classpath目录中。
  2. compile编译项目的主要源码,通常对src/main/java下的java文件编译后输出到主classpath目录中
  3. process-test-sources 处理项目的测试资源文件,通常对src/test/resources里的内容处理后,复制到项目输出的主classpath目录中
  4. test-compile编译项目的测试代码,通常对src/test/java下的java文件编译后输出到主classpath目录中
  5. test使用单元测试框架运行测试,测试代码不会被打包或部署
  6. package接受编译好的代码,打包成可发布的形式,如jar
  7. install将包安装到本地Maven仓库,供其他项目引用
  8. deploy将最终的包复制到远程仓库,供其他开发人员使用

site生命周期

目的是建立和发布项目站点

  1. pre-site执行一些在生成项目站点的准备工作
  2. site 生成项目站点文档
  3. post-site执行生成项目站点后的善后工作
  4. site-deploy将项目站点发布到服务器上

生命周期调用示例

mvn clean 调用clean周期的clean阶段,实际执行pre-clean、clean
mvn test 调用default周期的test阶段,实际执行default周期内test之前的所有阶段和test
mvn clean install 调用clean周期的clean阶段和default周期的install阶段
mvn clean deploy site-deploy 调用clean周期的clean阶段和default周期的deploy阶段和site周期的site-deploy阶段

插件

Maven在定义了抽象的生命周期后,并没有给出具体实现,其功能完全由独立的插件完成。对于插件本身,为了复用代码,通常可以完成一系列的任务和功能。这些功能聚集在一个插件里,每个功能都是一个插件目标 。例如maven-dependency-plugin有十多个目标,包括dependency:list、dependency:tree等。

插件绑定

Maven不同的生命周期与插件的不同目标绑定,就能实现整个构建过程。一个生命周期的某一阶段可以绑定多个插件目标,此时插件的执行顺序与插件的声明顺序相同。

默认绑定

为了让用户不用任何配置就能构建Maven项目,Maven为许多生命周期的重要阶段内置绑定关系。

生命周期:阶段插件名称:目标
clean:cleanmaven-clean-plugin:clean
site:sitemaven-site-plugin:site
site:deploymaven-site-plugin:deploy
default:process-resourcesmaven-resources-plugin:resources
default:compilemaven-compile-plugin:compile
default:process-test-resourcesmaven-resources-plugin:testResources
default:test-compilemaven-compile-plugin:testCompile
default:testmaven-surefire-plugin:test
default:packagemaven-jar-plugin:jar
default:installmaven-install-plugin:install
default:deploymaven-deploy-plugin:deploy

注意:default生命周期的插件绑定关系与项目打包类型有关,表中所述为默认打包类型jar的绑定关系,其它类型如war、pom可查看官方文档http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

自定义绑定

用户可以选择自己将特定的插件绑定到生命周期的某个阶段上,以完成个性化的需求。通过在项目的pom文件配置如下:

<build>
    <plugins>
        <plugin>
        <groupId>...</groupId>
        <artifactId>...</artifactId>
        <version>...</version>
        <executions>
            <execution>
            <id>...</id>
            <phase>...</phase>
            <goals>
                <goal>...</goal>
            </goals>
            </execution>
        </executions>
        </plugin>
    </plugins>
</build>

groupId,artifactId,version唯一指定一个插件,<execution>元素用来配置该插件的一个运行任务,<phase>指定该任务在哪个生命周期执行,如install,<goal>指定要执行的插件目标,该插件目标必须从属于前面指定的插件。有些插件在编写时定义了默认绑定阶段,可以使用maven-help-plugin插件查看相关信息,例如:

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compile-plugin:2.1

使用插件目标前缀替换插件的坐标表示如下:

mvn help:describe -Dplugin=compile

若只想获取该插件的某个目标的信息,可添加goal参数如下:

mvn help:describe -Dplugin=compile -Dgoal=compile

插件配置

在完成生命周期与插件绑定后,可以通过配置插件参数来进一步调控插件的行为。

命令行配置

用户可以在运行命令的时候,以-D名值对的形式配置插件,但是效力只限于该次运行 例如:

mvn install -Dmaven.test.skip = true

该命令指定这次调用install时,跳过测试阶段。

Pom文件全局配置

在项目pom文件中对某插件配置过后,该插件的行为会一直受其影响。适用于某些插件其参数从项目创建到发布都不改变的情况。

<build>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compile-plugin</artifactId>
        <version>2.1</version>
        <configuration>
            <source>1.5</source>
            <target>1.5</target>
        </configuration>
        </plugin>
    </plugins>
</build>

这段配置文件,指定了插件为maven-compile-plugin,参数使得插件编译java 1.5的源码,生成与JVM 1.5兼容的字节码文件

小结

本文主要介绍了Maven的生命周期,着重解析了default生命周期,给出了基本的插件绑定和配置方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值