Maven现在是Java开发依赖包管理的标准了,大部分人可能都只会熟悉
编写dependency标签,而真正编译,打包都是通过插件来完成的,这篇文章整理下工作中用的比较多的Maven插件,更详细的Maven插件请参考官网:https://maven.apache.org/plugins/index.html。
一、标准插件
1、clean
清除编译好的包,一般和其它插件一起用,如mvn clean install
2、compiler
编译源码;
可通过compilerVersion属性设置JDK版本
<configuration><compilerVersion>1.8</compilerVersion></configuration>
还可设置源码版本和目标字节码的版本:
<configuration><source>1.8</source><target>1.8</target></configuration>
还可以通过arg来传递参数:
<configuration><compilerArgs><arg>-verbose</arg><arg>-Xlint:all,-options,-path</arg></compilerArgs></configuration>
3、deploy
部署到远程仓库中,一般不用设置什么参数;
4、failsafe
JUnit集成测试
5、install
安装到本地仓库
6、resources
拷贝资源到输出目录中;
可通过resources.resource.directory指定额外要打包的资源;
<resources><resource><directory>src/my-resources</directory></resource></resources>
还可设置字符集:
<configuration><encoding>UTF-8</encoding></configuration>
7、site
生成站点,还可启动一个web服务器进行浏览;
常用属性有port和tempWebappDirectory
<configuration><port>9000</port><tempWebappDirectory>${basedir}/target/site/tempdir</tempWebappDirectory></configuration>
8、verifier
用于集成测试
9、surefire
运行单元测试
常用参数有:argLine,给单元测试设置参数;
<configuration><argLine>-Djava.security.manager -Djava.security.policy=${basedir}/src/test/resources/java.policy</argLine></configuration>
还可以并行测试
<configuration><parallel>methods</parallel><threadCount>10</threadCount></configuration>
二、surefire-report
生成测试报告;
常用参数有:
outputDirectory:报告生成目录
<configuration><outputDirectory>${basedir}/target/newsite</outputDirectory></configuration>
三、jacoco
生成代码覆盖率报告;
官网地址:https://www.eclemma.org/jacoco/trunk/doc/maven.html
具体使用如下:
1、引入依赖:
<plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.8.8-SNAPSHOT</version></plugin>
2、配置插件
<project><reporting><plugins><plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><reportSets><reportSet><reports><!-- select non-aggregate reports --><report>report</report></reports></reportSet></reportSets></plugin></plugins></reporting></project>
它定义了不同的goal,最常用的是prepare-agent和report。
如果想查看增量覆盖率,可通过工具diff-cover处理,这是一个Python脚本,需要先安装Python相关环境;
四、assembly插件
主要作用是制作项目分发包,包中包含了项目的可执行文件、源代码等等。支持常用的文件格式:zip、tar.gz、jar 和 war 等;
五、archetype插件
用于生成项目骨架;
直接执行以下命令就可以生成项目框架:
mvn archetype:generate




