maven插件及其使用
本篇文章首先介绍maven命令的格式和原理,然后介绍springboot中经常使用的一些mvn插件,后续会再补充maven的详细介绍
参考:https://blog.csdn.net/zzuhkp/article/details/123493071
1 maven插件
1.1 maven的生命周期阶段
参考:https://www.cnblogs.com/layuechuquwan/p/11959053.html
Maven有三套相互独立的生命周期,分别是clean、default和site。每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段
1、clean生命周期:清理项目,包含三个phase。
1)pre-clean:执行清理前需要完成的工作
2)clean:清理上一次构建生成的文件
3)post-clean:执行清理后需要完成的工作
2、default生命周期:构建项目,重要的phase如下。
1)validate:验证工程是否正确,所有需要的资源是否可用。
2)compile:编译项目的源代码。
3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
4)Package:把已编译的代码打包成可发布的格式,比如jar。
5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6)verify:运行所有检查,验证包是否有效且达到质量标准。
7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
8)Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
3、site生命周期:建立和发布项目站点,phase如下
1)pre-site:生成项目站点之前需要完成的工作
2)site:生成项目站点文档
3)post-site:生成项目站点之后需要完成的工作
4)site-deploy:将项目站点发布到服务器
各个生命周期相互独立,一个生命周期的阶段前后依赖。
举例如下:
1、mvn clean
调用clean生命周期的clean阶段,实际执行pre-clean和clean阶段
2、mvn test
调用default生命周期的test阶段,实际执行test以及之前所有阶段
3、mvn clean install
调用clean生命周期的clean阶段和default的install阶段,实际执行pre-clean和clean,install以及之前所有阶段
每个阶段绑定了 0 个或多个插件,功能都是由插件来实现的,例如对于 clean 生命周期的 clean 阶段就是由 maven-clean-plugin 插件来执行的,我们可以根据执行命令后的日志查看
1.2 插件调用方式
插件有如下几种调用方式:
1 mvn 生命周期阶段:如 mvn pre-clean,maven 会自动执行与该生命周期绑定的插件目标。
2 mvn groupId:artifactId[:version]:goal,如 mvn org.apache.maven.plugins:maven-clean-plugin:3.1.0:clean,对于版本号 version 来说是可以省略的,如果省略 maven 会使用本地仓库中最新的版本。
3 mvn 插件前缀:goal:插件前缀可以理解为插件的标识,用于简化插件的调用,例如 mvn spring-boot:run 中的 spring-boot 就是 spring-boot-maven-plugin 插件的前缀,自定义插件如果遵循 xxx-maven-plugin 的形式,maven 默认会将 maven-plugin 前面的内容作为插件前缀。
举例:
我们以执行mvn clean为例说明
首先,我们要知道,clean生命周期有三个phase:pre-clean、clean、post-clean。我们现在要使用的是clean阶段。而每一个phase包含0个或多个插件,我们用如下方式查看对应的插件。
首先,我们在spring-boot-dependencies.pom中查找对应的插件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId> <version>${maven-clean-plugin.version}</version> </plugin>
然后使用如下命令查看这个插件的详细信息
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-clean-plugin -Ddetail
第一种调用方式:
mvn 生命周期阶段
第二种调用方式:
mvn groupId:artifactId[:version]:goal
第三种调用方式:
mvn 插件前缀:goal