Maven插件介绍一
Maven生命周期
Maven 将项目抽象为一个特定生命周期,基于生命周期及其特定阶段搭建框架,以插件的形式提供生命周期不同阶段的业务逻辑。
Maven标准构建生命周期和阶段
生命周期 | 阶段 | 说明 |
Clean | pre-clean | 在真正项目清理前执行阶段 |
clean | 移除上次构建生成的所有文件 | |
post-clean | clean的后续操作 | |
Default | validate | 校验项目的正确性及必要信息是否可用 |
initialize | 初始化构建,比如设置属性值,创建目录 | |
generate-sources | 生成编译涉及到的源码 | |
process-sources | 处理源码 | |
compile | 编译项目源码 | |
process-classes | 编译后处理 | |
generate-test-sources | 生成测试相关源码 | |
process-test-sources | 处理测试相关源码 | |
generate-test-resources | 创建测试资源 | |
process-test-resources | 拷贝和处理测试资源,将其放置于目标目录 | |
test-compile | 编译测试源码到目标目录 | |
process-test-classes | 测试类后处理 | |
test | 执行测试套件 | |
prepare-package |
| |
package | 打包 | |
pre-integration-test | 集成测试预处理 | |
integration-test | 执行集成测试 | |
post-integration-test | 集成测试后处理 | |
verify | 校验包 | |
install | 将包安装到本地仓库 | |
deploy | 将包安装到远程仓库 | |
SITE | pre-site | 执行工程站点生成前操作 |
site | 生成项目站点文档 | |
post-site | 执行项目站点生成后操作 | |
site-deploy | 将项目文档发布到目标web服务器 |
执行生命周期
Mvn verify
Mvn clean deploy
执行生命周期本质上是执行生命周期绑定插件的目标,插件目标对应于插件实现的一项任务,插件目标可以绑定到1个活多个阶段,也可以不绑定任何构建阶段,而通过命令直接调用来执行。
如 mvn clean dependency:copy-dependencies package 表示一次执行 clean阶段绑定的插件目标,dependency:copy-dependencies, package阶段绑定的插件目标。
阶段绑定插件及目标
Clean阶段
Phase | plugin:goal |
clean | clean:clean |
ejb / ejb3 / jar / par / rar / war 对应项目默认生命周期阶段绑定插件
Phase | plugin:goal |
process-resources | resources:resources |
compile | compiler:compile |
process-test-resources | resources:testResources |
test-compile | compiler:testCompile |
test | surefire:test |
package | ejb:ejb or ejb3:ejb3 or jar:jar or par:par or rar:rar or war:war |
install | install:install |
deploy | deploy:deploy |
maven-plugin 项目默认生命周期阶段绑定插件
Phase | plugin:goal |
generate-resources | plugin:descriptor |
process-resources | resources:resources |
compile | compiler:compile |
process-test-resources | resources:testResources |
test-compile | compiler:testCompile |
test | surefire:test |
package | jar:jar and plugin:addPluginArtifactMetadata |
install | install:install |
deploy | deploy:deploy |
POM 项目默认生命周期阶段绑定插件
Phase | plugin:goal |
package | |
install | install:install |
deploy | deploy:deploy |
Maven 插件
Maven官方插件及其和生命周期阶段绑定关系
插件列表见Maven – Available Plugins,列举了maven生命周期阶段绑定的核心插件。点击对应插件进行详细了解。
如Compiler阶段对应插件Apache Maven Compiler Plugin 。
插件的配置和执行
插件声明:, <build>标签下的<pluginManagement>可以生命项目中使用的插件, 这里的插件列表不会被实际加载,一般用于在父POM文件中定义, 对插件版本进行管理, 子模块中可以直接使用groupId和artifactId执行插件, 不用指定版本。
<pluginManagement><plugins>…</plugins></ pluginManagement>
插件的配置:<build>标签直接使用<plugins>则定义项目实际加载的插件,如父POM没有通过生命指定版本, 使用配置时需要制定插件版本。
以compiler插件为例
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>${project.build.sourceEncoding}</encoding> <compilerArgs> <compilerArg>-parameters</compilerArg> </compilerArgs> </configuration> </plugin> |
对于Maven生命周期阶段默认绑定的插件可以不指定executions配置阶段和目标。
下面是一个绑定maven生命周期阶段和执行目标的插件配置。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> |