Maven插件运行方式
Maven在运行命令时都会对应每个生命周期,每个生命周期在执行时都会看pom.xml文件中配置了哪些插件,然后运行它。
Maven 的生命周期与插件相互绑定,用以完成实际的构建任务。更具体而言,是生命周期的阶段与插件的目标相互绑定,以完成某个具体的构建任务。 具体的功能由插件(Plugin)实现。一个插件可以实现多个目标(Goal)
为了解耦插件的功能和工程阶段,实现高度的可配置性,maven规定插件只是实现目标的功能, 通过配置来决定在哪个阶段执行(Execution)哪些目标操作。 甚至可以把一个Goal绑定到多个Phase,以实现复用。
maven内置了一些默认的插件,并根据不同的工程packing类型在各个phase中默认绑定了一些goal。 下表中列出default生命周期中各阶段默认绑定的goal,其中goal按照管理使用plugin
Maven插件的一些基本设置
Packaging
pom.xml中的<packaging>是该项目的打包方式,Maven预设的几种打包方式分别是:jar/war/ejb/ejb3/rar;
方式一:<packaging>war</packaging>
执行:mvn package
1 [INFO] --- maven-war-plugin:2.4:war (default-war) @ common-util --- 2 [INFO] Packaging webapp 3 [INFO] Assembling webapp [common-util] in [E:\cncrowd_workspace\common-deploy\co 4 mmon-util\target\common-util-0.0.1] 5 [INFO] Processing war project 6 [INFO] Webapp assembled in [2889 msecs] 7 [INFO] Building war: E:\cncrowd_workspace\common-deploy\common-util\target\commo 8 n-util-0.0.1.war
方式二:<packaging>jar</packaging>
执行:mvn package
1 [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ common-util --- 2 [INFO] Building jar: E:\cncrowd_workspace\common-deploy\common-util\target\commo 3 n-util-0.0.1.jar 4 [INFO] 5 [INFO] >>> maven-source-plugin:2.4:jar (attach-sources) @ common-util >>> 6 [INFO] 7 [INFO] <<< maven-source-plugin:2.4:jar (attach-sources) @ common-util <<< 8 [INFO] 9 [INFO] --- maven-source-plugin:2.4:jar (attach-sources) @ common-util --- 10 [INFO] Building jar: E:\cncrowd_workspace\common-deploy\common-util\target\commo 11 n-util-0.0.1-sources.jar
打包方式会与Lifecycle做一个绑定,mvn会根据打包的类型来调用不同的插件来完成打包的工作,比如jar包就会调用maven-jar-plugin的jar任务来打包,war会调用war:war来完成打包
几种默认的Lifecycle绑定(ejb/jar/rar/war):
概念 | 说明 |
---|---|
LifeCycle | 生命周期,maven内置default,sie,clean三个生命周期 |
Phase | 阶段,每个生命周期有不同的阶段 |
Plugin | 插件,实现实际的构建功能 |
Goal | 一个插件可以实现多个goal,goal具备具体的功能 |
Execution | 通过配置,决定在某个Phase执行哪些Goal |
Project | maven管理的目标:软件工程,小的工程可以聚合成大工程 |
PackageType | 为了便于管理工程,按照构建目标区分成不同的工程类型,如jar,war,ear等 |
Dependency | 依赖,project之间存在依赖关系 |
DependencyScope | maven对依赖定义了不同的作用范围 |
Management | 可以配置一个工程如何管理依赖关系 |
Repository | 仓库,存放包,分为本地库和远程库 |
Build | 构建的动作。使用maven管理工程,主要是指定将project构建到某个phase |
生命周期 | 生命周期阶段 | 插件目标 | 执行任务 |
clean | pre-clean | ||
clean | maven-clean-plugin:clean | 删除项目的输出目录。 | |
post-clean | |||
site | pre-site | ||
site | maven-site-plugin:site | ||
post-site | |||
site-deploy | maven-site-plugin:deploy | ||
default | process-resources | maven-resources-plugin:resources | 复制主资源文件至主输出目录 |
compile | maven-compiler-plugin:compile | 编译主代码至主输出目录 | |
process-test-resources | maven-resources-plugin:testResources | 复制测试资源文件至测试输出目 | |
test-compile | maven-compiler-plugin:testCompile | 编译测试代码至测试输出目录 | |
test | maven-surefire-plugin:test | 执行测试用例 | |
package | maven-jar-plugin:jar(ejb:ejb jar:jar rar:rar war:war) | 创建项目jar包 | |
install | maven-install-plugin:install | 将项目输出构件安装到本地仓库 | |
deploy | maven-deploy-plugin:deploy | 将项目输出构件部署到远程仓库 | |
来源:https://www.cnblogs.com/yantz/p/4463573.html