Maven系列学习(三)Maven生命周期和插件

Maven生命周期和插件

Maven另外的两个核心概念就是生命周期和插件,Maven的生命周期都是抽象的,其实实际行为都是由插件来完成的,生命周期和插件两者协同工作

1.生命周期

Maven的生命周期就是为了对所有的构建过程进行抽象和统一,这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤,Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,在Maven的设计中,实际的任务都是交给插件来完成的

一次构建(build):initialize--compile--test--package--integrationTest--deploy;

2.三套生命周期

Maven拥有三套互相独立的生命周期,分别是clean,default和site.clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点,每个生命周期包含一些阶段(phase),而且是有顺序的,并且后面的阶段依赖前面的阶段,而生命周期本身是独立的

clean的生命周期的目的是清理项目,包含三个阶段:pre-clean(清理前需要完成的工作),clean(清理上次构建的文件),post-clean(清理后需要完成的工作)

default的生命周期定义真正构建时需要执行的所有步骤,它是所有生命周期中最核心的部分,其包含的阶段如下:

validate--initialize--generate-source--process-source--generate-resources--process-resource--compile--process-classes--generate-test-sources--generate-test-resources--process-test-resource--test-compile--process-test-classes--test--prepare-package--package--pre-integraion-test-integration-test--post-integration-test--verify--install--deploy

site生命周期的目的是建立和发布项目站点,Maven能给予POM所包含的信息,自动生成一个友好的站点,该生命周期包含以下阶段:

pre-site--site--post-site--site-deploy

3.命令行与生命周期

从命令行执行Maven任务的最主要方式就是调用Maven的生命周期阶段:

(1). mvn clean:调用clean的生命周期

(2). mvn test:调用default生命阶段的test阶段,实际执行的阶段为default生命周期的从validate---到test的所有阶段

(3). mvn clean install:该命令是调用clean生命周期和defualt生命周期的install阶段,实际是pre-clean,clean,post-clean,和default生命周期的从validate到install的所有阶段

(4). mvn clean deploy site-deploy:该命令我就不做过多解释了

4.POM中插件全局配置

并不是所有的插件参数都合适从命令行配置,有些参数的值从项目创建到项目发布都不会改变,或者说很少改变,对于这种情况,在POM文件中一次性配置就显然比重复在命令行输入要方便

用户可以在声明插件的时候,对此插件进行一个全局的配置,也就是说所有说,所有该基于该插件目标的任务,都会使用这些配置 

<build>
    <plugins>
         <!-- 插件定义 -->
        <plugin>
            <groupId>org.apache.maven.plugins<groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.1</version>
                <configuration>
                      <!-- 编译1.8版本的源文件 -->
                    <source></source>
                          <!-- 生成与JVM 1.8 兼容的字节码文件 -->
                    <target></target>
                </configuration>
        </plugin>
    </plugins>
</build>
        

5.插件绑定 

Maven的生命周期与插件互相绑定,用以完成实际的构建任务,具体而言,是生命周期阶段与插件的目标互相绑定,以完成某个具体的构建任务,比如项目编译这一任务,它对应了default生命周期的compile这一阶段,而maven-compile-plugin这一插件的compile目标能够完成该任务,因此,将它们绑定,就能实现项目编译的目的

原文地址:https://www.cnblogs.com/kirohuji/p/6964562.html