Maven常见插件Plugin
文章目录
Maven常见插件整理
1、maven-surefire-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
Maven本身并不是一个单元测试框架,它只是在构建执行到特定生命周期阶段的时候,通过插件来执行JUnit或者TestNG的测试用例。这个插件就是maven-surefire-plugin
,也可以称为测试运行器(Test Runner),它能兼容JUnit3、JUnit 4以及TestNG。
更多参考:maven 插件 maven-surefire-plugin)
2、lombok-maven-plugin
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
</plugin>
3、maven-assembly-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- 这个是assembly 所在位置;${basedir}是指项目的的根路径 -->
<descriptors>
descriptor>${basedir}/src/main/assembly/assembly.xml</descriptor>
</descriptors>
<!--打包解压后的目录名;${project.artifactId}是指:项目的artifactId-->
<finalName>${project.artifactId}</finalName>
<!-- 打包压缩包位置-->
<outputDirectory>${project.build.directory}/release</outputDirectory>
<!-- 打包编码 -->
<encoding>UTF-8</encoding>
</configuration>
<executions>
<execution><!-- 配置执行器 -->
<id>make-assembly</id>
<phase>package</phase><!-- 绑定到package生命周期阶段上 -->
<goals>
<goal>single</goal><!-- 只运行一次 -->
</goals>
</execution>
</executions>
</plugin>
Assembly 插件的主要作用是,允许用户将项目输出与它的依赖项、模块、站点文档、和其他文件一起组装成一个可分发的归档文件。说白了就是:结构定制化的打包。
更多参考:maven-assembly-plugin)
4、maven-war-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<!--<attachClasses>true</attachClasses>,这样B项目内就可以使用A项目定义的class了-->
<attachClasses>true</attachClasses>
<!--打包的时候如果不想使用WEB-INF/classes,则在插件的配置内指定 <archiveClasses>true</archiveClasses>
即可,这样会把项目的java文件打包成jar放到WEB-INF/lib内-->
<archiveClasses>true</archiveClasses>
<!--设置jar包名字,如果A中没有定义该名字,那么名字为classes,如下图:-->
<classesClassifier>api</classesClassifier>
<!--
相同点:
packagingExcludes与webResources 均可以排除某些文件。
不同点:
packagingExcludes针对拷贝到target后的资源进行处理。
webResources针对编译前的资源进行处理。
-->
<packagingExcludes>WEB-INF/classes/**/**</packagingExcludes>
<webResources>
<resource>
<directory>target/${project.artifactId}/WEB-INF/classes</directory>
<excludes>
<exclude>**/**</exclude>
</excludes>
</resource>
</webResources>
</configuration>
</plugin>
在项目开发中,A依赖于B,如果两个都是jar项目,那就好办,但是今天在项目中,遇到A和B都是war项目的时候,那就遇到棘手的时候了,编译会报错,错误描述可以发现,没有发现jar包,这样就需要用到Maven-war-plugin插件来把B项目生成jar包来给A依赖了,现在说说如何使用Maven-war-plugin插件
5、maven-release-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.0</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<autoVersionSubmodules>true</autoVersionSubmodules>
<goals>-f pom.xml deploy</goals>
</configuration>
</plugin>
Release插件是Apache Maven团队提供的官方插件,最终版本是2015-10-17发布的2.5.3,能够为项目代码库打tag,并将项目代码库中的代码发布到SCM的新版本
更多参考:Maven版本管理-Maven Release Plugin插件 maven release plugin插件](https://www.pianshen.com/article/88291358505/))
6、spring-boot-maven-plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.4.RELEASE</version>
<configuration>
<fork>true</fork>
<excludes>${basedir}/src/main/webroot</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
springboot框架提供了一套自己的打包机制,是通过spring-boot-maven-plugin插件来实现的。
更多参考:springboot 打包插件spring-boot-maven-plugin打包机制及内部结构分析)
Maven-build之spring-boot-maven-plugin)
7、maven-source-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
在很多情况下,需要对于Maven工程的源代码进行源文件的打包,可以利用source插件来完成。利用Maven的Source插件,对Maven工程的源码进行打jar包。
更多参考:maven 插件之maven-source-plugin)
8、maven-gpg-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
发布项目到Maven中央库。
更多参考:发布项目到Maven中央库)