Maven的生命周期和插件
2015-12-01 17:20
302 查看
一个完整的项目构建过程通常包括清理、编译、测试、打包、集成测试、验证、部署等步骤,Maven从中抽取了一套完善的、易扩展的生命周期。Maven的生命周期是抽象的,其中的具体任务都交由插件来完成。Maven为大多数构建任务编写并绑定了默认的插件,如针对编译的插件:maven-compiler-plugin。用户也可自行配置或编写插件。
2)clean :清理上一次构建生成的所有文件;
3)post-clean :执行清理后的工作
1)validate
2)initialize
3)generate-sources
4)process-sources
5)generate-resources
6)process-resources :复制和处理资源文件到target目录,准备打包;
7)compile :编译项目的源代码;
8)process-classes
9)generate-test-sources
10)process-test-sources
11)generate-test-resources
12)process-test-resources
13)test-compile :编译测试源代码;
14)process-test-classes
15)test :运行测试代码;
16)prepare-package
17)package :打包成jar或者war或者其他格式的分发包;
18)pre-integration-test
19)integration-test
20)post-integration-test
21)verify
22)install :将打好的包安装到本地仓库,供其他项目使用;
23)deploy :将打好的包安装到远程仓库,供其他项目使用;
2)site :生成项目的站点文档;
3)post-site
4)site-deploy :发布生成的站点文档
Maven官网上有更详细的官方插件列表。http://maven.apache.org/plugins/index.html
如执行mvn clean install命令时,调用的插件和执行的插件目标如下:
第二列中,冒号后面即是绑定的插件目标,冒号前面是插件的前缀(prefix),是配置和使用插件的一种简化方式。Plugin Prefix
转载文章,原文link=》http://www.cnblogs.com/luotaoyeah/p/3819001.html
1 . 三套生命周期
Maven定义了三套生命周期:clean、default、site,每个生命周期都包含了一些阶段(phase)。三套生命周期相互独立,但各个生命周期中的phase却是有顺序的,且后面的phase依赖于前面的phase。执行某个phase时,其前面的phase会依顺序执行,但不会触发另外两套生命周期中的任何phase。1 . 1 clean生命周期
1)pre-clean :执行清理前的工作;2)clean :清理上一次构建生成的所有文件;
3)post-clean :执行清理后的工作
1 . 2 default生命周期
default生命周期是最核心的,它包含了构建项目时真正需要执行的所有步骤。1)validate
2)initialize
3)generate-sources
4)process-sources
5)generate-resources
6)process-resources :复制和处理资源文件到target目录,准备打包;
7)compile :编译项目的源代码;
8)process-classes
9)generate-test-sources
10)process-test-sources
11)generate-test-resources
12)process-test-resources
13)test-compile :编译测试源代码;
14)process-test-classes
15)test :运行测试代码;
16)prepare-package
17)package :打包成jar或者war或者其他格式的分发包;
18)pre-integration-test
19)integration-test
20)post-integration-test
21)verify
22)install :将打好的包安装到本地仓库,供其他项目使用;
23)deploy :将打好的包安装到远程仓库,供其他项目使用;
1 . 3 site生命周期
1)pre-site2)site :生成项目的站点文档;
3)post-site
4)site-deploy :发布生成的站点文档
2 . Maven的插件
Maven的核心文件很小,主要的任务都是由插件来完成。定位到:%本地仓库%\org\apache\maven\plugins,可以看到一些下载好的插件。Maven官网上有更详细的官方插件列表。http://maven.apache.org/plugins/index.html
2 . 1 插件的目标(Plugin Goals)
一个插件通常可以完成多个任务,每一个任务就叫做插件的一个目标。每个插件都有哪些个目标,官方文档有更详细的说明。如执行mvn clean install命令时,调用的插件和执行的插件目标如下:
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ learning-java --- [INFO] Deleting /_MyWorkSpace/ln/learning/learning-java/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ learning-java --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ learning-java --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 140 source files to /_MyWorkSpace/ln/learning/learning-java/target/classes [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ learning-java --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /_MyWorkSpace/ln/learning/learning-java/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ learning-java --- [INFO] No sources to compile [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ learning-java --- [INFO] No tests to run. [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ learning-java --- [INFO] Building jar: /_MyWorkSpace/ln/learning/learning-java/target/learning-java-1.0-SNAPSHOT.jar [INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ learning-java --- [INFO] Installing /_MyWorkSpace/ln/learning/learning-java/target/learning-java-1.0-SNAPSHOT.jar to /.m2/repository/learning/group/learning-java/1.0-SNAPSHOT/learning-java-1.0-SNAPSHOT.jar [INFO] Installing /_MyWorkSpace/ln/learning/learning-java/pom.xml to /.m2/repository/learning/group/learning-java/1.0-SNAPSHOT/learning-java-1.0-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 6.920 s [INFO] Finished at: 2015-12-23T16:32:33+08:00 [INFO] Final Memory: 17M/245M [INFO] ------------------------------------------------------------------------
3 . 将插件绑定到生命周期
Maven的生命周期是抽象的,实际需要插件来完成任务,这一过程是通过将插件的目标(goal)绑定到生命周期的具体阶段(phase)来完成的。如:将maven-compiler-plugin插件的compile目标绑定到default生命周期的compile阶段,完成项目的源代码编译:3 . 1 内置的绑定
Maven对一些生命周期的阶段(phase)默认绑定了插件目标,因为不同的项目有jar、war、pom等不同的打包方式,因此对应的有不同的绑定关系,其中针对default生命周期的jar包打包方式的绑定关系如下:第二列中,冒号后面即是绑定的插件目标,冒号前面是插件的前缀(prefix),是配置和使用插件的一种简化方式。Plugin Prefix
3 . 2 自定义绑定
用户可以根据需要将任何插件目标绑定到任何生命周期的阶段,如:将maven-source-plugin的jar-no-fork目标绑定到default生命周期的package阶段,这样,以后在执行mvn package命令打包项目时,在package阶段之后会执行源代码打包,生成如:ehcache-core-2.5.0-sources.jar形式的源码包。<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <id>attach-source</id> <phase>package</phase><!-- 要绑定到的生命周期的阶段 --> <goals> <goal>jar-no-fork</goal><!-- 要绑定的插件的目标 --> </goals> </execution> </executions> </plugin> </plugins> …… </build>
转载文章,原文link=》http://www.cnblogs.com/luotaoyeah/p/3819001.html
相关文章推荐
- 九度OJ 1354:和为S的连续正数序列 (整除)
- 内核线程
- 每天一个linux命令(14):head 命令
- 九度OJ 1354:和为S的连续正数序列 (整除)
- iOS开发中SDK是什么?
- iOS 苹果官方Demo合集
- Android 4.1 设置Activity切换动画(XML)
- JDBC-简单连接Oracle Database
- iOS NSUserDefaults简介及使用
- 基于yarn的公平调度实例
- 进程地址空间
- 可重入内核
- Win7 or late 关闭驱动数字签名验证
- 弹弹球 ,我的java学习之路
- iOS NSUserDefaults简介及使用
- Docker 2 -- 关于Dockerfile
- Semaphore信号量控制访问量研究
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- uiautomator解决设置中文问题
- linux如何关闭防火墙