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