首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Maven札记6-Maven生命周期和插件

2012-06-26 
Maven笔记6-Maven生命周期和插件1. 生命周期-模板方法设计模式的典型运用??? Maven拥有三套相互独立的生命

Maven笔记6-Maven生命周期和插件

1. 生命周期-模板方法设计模式的典型运用

??? Maven拥有三套相互独立的生命周期:clean,default,site;每个生命周期包含一些阶段(phase),这些阶段是有

??? 顺序的,并且后面的阶段依赖与前面的阶段,用户和Maven 最直接的交互方式就是调用这些生命周期阶段。

??? (1) clean

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

??? pre-clean:执行一些清理前需要完成的工作;

??? clean:清理上一次构建生成的文件;

??? post-clean:执行一些清理后需要完成的工作。

??? (2) default

??? 目的是构建项目,定义了真正构建时所需要执行的所有步骤,有以下主要步骤:

??? validate;

??? initialize;

??? process-sources;

??? proces-sources:处理项目主资源文件。一般来说,是对src/mani/resources目录内容变量替换等工作后,复

??? 制项目输出的主classpath目录中;

??? generate-resources;

??? process-resources;

??? compile:编译项目的主源码。一般来说,是编译src/main/java目录下的java文件至项目输出的主classpaht中;

??? process-classes ;

??? generate-test-sources;

??? process-test-sources:处理项目测试资源文件。一般来说,是对src/test/resource目录的内容进行变量替换

??? 等工作后,复制到项目输出的classpaht目录中;

??? generate-test-resources;

??? process-test-resources;

??? test-compile:编译项目的测试代码。一般来说,是编译src/test/java目录下的java文件至项目输出的测试

??? classpath目录中;

??? process-test-classes;

??? test:使用test测试框架运行测试,测试代码不会被打包或部署;
??? prepare-package;

??? package:接受编译好的代码,打包成可发布的格式,如JAR;

??? pre-integration-test;

??? integration-test;

??? post-integration-test;

??? verify;

??? install:将包安装到Maven本地仓库,共本地其他Maven项目使用;

??? deploy:将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。

??? (3) site

??? 目的是建立和发布项目站点,包含下面几个阶段:

??? pre-site:执行一些在生成项目站点之前需要完成的工作;

??? site:生成项目的站点文档;

??? post-site:执行一些在生成项目站点之后需要完成的工作;

??? site-deploy:将生成的项目站点发布到服务器上。

2. 插件目标

??? Maven之定义了抽象的生命周期,具体的任务是交由插件完成的,而插件的功能是由插件的每一个目标来

??? 体现的。例如:

??? dependency:analyze,dependency:tree,dependency:list

??? 其中analyze,trrr,list均为maven-dependency-plugin的一个目标。

3. 插件绑定

??? 即生命周期的阶段与插件的目标相互绑定,已完成某个具体的构建任务。

??? (1) 内置绑定

??? A. clean生命周期阶段与插件目标的绑定关系

??? 插件目标:maven-clean-plugin:clean与生命周期pre-clean,clean,post-clean绑定。

??? B. site生命周期阶段与插件目标的绑定关系

??? 插件目标:maven-site-plugin:site与生命周期:pre-site,site,post-site绑定,而maven-site-plugin:

??? deploy与site-deploy绑定。

??? C. default生命周期的内置插件绑定关系及具体任务

??? 生命周期阶段?????????????????????? 插件目标?????????????????????????????????????????????????? 执行任务

??? process-resources??????????? maven-resources-plugin:resources??????? 复制主自愿文件至输出目录

??? compile???????????????????????????? maven-compile-plugin:compile??????????????? 编译主代码至输出目录

??? process-test-resources??? maven-resources-plugin:testReources??? 复制测试资源文件至测试输出目录

??? test-compile???????????????????? maven-compile-plugin:testCompile????????? 编译测试代码至测试输出目录

??? test????????????????????????????????? maven-surefire-plugin:test????????????????????? 执行测试用例

??? package?????????????????????????? maven-jar-plugin:jar??????????????????????????????? 创建项目jar包

??? install?????????????????????????????? maven-install-plugin:install????????????????????? 将项目输出文件安装到本地仓库

??? deploy????????????????????????????? maven-deploy-plugin:deploy?????????????????? 将项目输出构建部署到远程仓库

??? (2) 自定义绑定

??? 用户可以自定义将某个插件目标绑定之生命周期的某个阶段,下面配置在default的生命周期的verify阶段上,在

??? 执行完集成测试后和安装构建前创建项目源码jar包:

??? <build>

??????? <plugins>

???????????? <plugin>

??????????????? <groupId>org.apache.maven.plugins</groupId>

??????????????? <artifactId>maven-source-plugin</artifactId>

??????????????? <version>2.1.1</version>

??????????????? <executions>

??????????????????? <execution>

??????????????????????? <id>attach-sources</id>

??????????????????????? <phase>verify</phase>

??????????????????????? <golas>

?????????????????????????????? <gola>jar-no-fork</goal>

??????????????????????? </goals>

??????????????????? </execution>

???????????????? </executions>

???????????? </plugin>

??????? </plugins>

??? </build>

4. 插件配置

??? (1) 命令行插件配置

??? mvn install -Dmaven.test.skip=true

??? (2) POM中对插件进行全局配置

??? <build>

???????? <plugins>

???????????? <plugin>

???????????????? <groupId>org.apache.maven.plugins</groupId>

???????????????? <artifactId>maven-compile-plugin</artifactId>

???????????????? <vrsion>2.1.1</version>

???????????????? <configuration>

????????????????????? <source>1.6</source>

????????????????????? <target>1.6</target>

???????????????? </configuration>

???????????? </plugin>

????????? </plugins>

??? </build>

??? (3) POM中插件进行任务配置

5. 获取插件信息:使用maven-help-plugin

??? mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compil-plugin:2.1.1

??? mvn help:describe -Dplugin=compile

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

??? mvn help:describe =Dplugin=compile -Ddetail

6. 插件仓库

??? 当Maven需要的插件在本地仓库中不存在时,是不会去远程仓库中查找的,此时需要使用pluginRepositories

??? 和pluginRepository元素进行配置。

??? <pluginRepositories>

???????? <pluginRepository>

???????????? <id>central</id>

???????????? <name>Maven Plugin Repository</name>

???????????? <url>http://repo1.maven.org/maven2</url>

???????????? <layout>default</layout>

???????????? <snapshots>

??????????????? <enabled>false</enabled>

???????????? </snapshots>

???????????? <releases>

??????????????? <updaPolicy>never</updatePolicy>

???????????? </releases>

????????? </pluginRepository>

??? </pluginRepositories>

热点排行