Maven 项目构建生命周期
一句话: Maven 构建生命周期描述的是一次构建过程经历了多少个事件
生命周期的3 大阶段
clean
清理工作
default
核心工作,例如编译,测试,打包,部署等
site
产生报告,发布站点等
生命周期是分阶段执行的
一句话: 项目构建生命周期分很多阶段,并不是每次都完整执行,而是根据用户的要求来执行的【比如你执行compile, 那么就执行到complie 这个阶段,如果你执行install, 则会执行compile->test->package->install】
举例说明
1、演示compile
2、演示install
maven 插件
介绍
1、插件与生命周期内的某个阶段绑定,在执行到对应生命周期时, 由对应插件来完成任务/功能.
2、maven 插件很多,先看一张图:
3、通过插件可以自定义其他功能
4、文档: http://maven.apache.org/plugins/index.html
自定义插件-应用实例
需求: 在pom.xml 加入自定义插件,能够在对maven_D 项目打包时,能输出主程序和测试程序的源码
完成步骤
- 当前package 只会得到项目的jar
- 修改D:\java_projects\maven_D\pom.xml, 加入maven 插件并配置(注意: 加入自定义插件后,可能会爆红,重启项目即可.)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"韩顺平Java 工程师xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.wyx</groupId><artifactId>maven_D</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><!-- 解读1. option 默认是false , 即不隐藏2. option 设置为true , 即隐藏--><optional>false</optional><!-- scope 设置为test, 让他在test 范围有效--><scope>compile</scope></dependency></dependencies><!--在build 时,自定义的插件--><build><plugins><plugin><!-- 插件坐标--><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><goals><!-- 对主程序输出源码打包--><goal>jar</goal><!-- 对测试程序输出源码打包--><goal>test-jar</goal></goals><!-- 在generate-test-resources 阶段执行--><phase>generate-test-resources</phase></execution></executions></plugin></plugins></build>
</project>
- 观察一下maven 项目管理器
- 再次执行maven-D 的intall 操作, 会得到两个新的jar ,分别包含了主程序和测试程序的源码。(说明: 测试时,需要保证src/main/… 和src/test/… 两个目录下有java 源代码,否则不会生成源码jar)
- 解压得到jar , 可以看到源码了.
maven 插件-maven 构建生命周期关系图
图解
-
在maven 项目构建生命周期中,每个阶段的执行都有相应的插件完成
-
各个插件执行过程中,会附带输出内容,比如jar/war/xml/源码
-
程序员可以使用maven 默认的插件,也可以自定义插件,完成定制任务.
-
自定义插件引入成功, 是可以看到