在 Maven 项目中,Project Build Plugins 是用于扩展 Maven 构建过程的工具。它们可以在构建生命周期的不同阶段执行特定的任务,例如编译代码、运行测试、打包项目等。以下是关于 Maven 构建插件的详细说明和配置方法:
1. Maven 构建插件的基本概念
- 插件(Plugin): 用于执行特定任务的工具。
- 目标(Goal): 插件的具体操作,例如
maven-compiler-plugin:compile
。 - 生命周期阶段(Lifecycle Phase): 构建过程中的阶段(如
compile
,test
,package
等),插件目标可以绑定到这些阶段。
2. 常用 Maven 构建插件
以下是一些常用的 Maven 构建插件及其配置示例:
(1) maven-compiler-plugin
用于编译 Java 代码。
配置示例:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>17</source> <!-- 指定 Java 版本 -->
<target>17</target>
</configuration>
</plugin>
</plugins>
</build>
(2) maven-surefire-plugin
用于运行单元测试。
配置示例:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M7</version>
<configuration>
<skipTests>false</skipTests> <!-- 是否跳过测试 -->
</configuration>
</plugin>
</plugins>
</build>
(3) maven-jar-plugin
用于打包项目为 JAR 文件。
配置示例:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.example.Main</mainClass> <!-- 指定主类 -->
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
(4) maven-war-plugin
用于打包项目为 WAR 文件(适用于 Web 应用)。
配置示例:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml> <!-- 是否忽略缺少 web.xml -->
</configuration>
</plugin>
</plugins>
</build>
(5) maven-assembly-plugin
用于创建自定义的发布包(如包含所有依赖的 ZIP 文件)。
配置示例:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<descriptors>
<descriptor>src/assembly/assembly.xml</descriptor> <!-- 自定义描述文件 -->
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
(6) maven-shade-plugin
用于创建包含所有依赖的 “fat JAR”。
配置示例:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.Main</mainClass> <!-- 指定主类 -->
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
3. 自定义插件配置
(1) 绑定插件目标到生命周期阶段
例如,将 maven-dependency-plugin
的 copy-dependencies
目标绑定到 package
阶段:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
(2) 配置插件参数
例如,配置 maven-compiler-plugin
的编译参数:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<compilerArgs>
<arg>-Xlint:unchecked</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
4. 查找更多插件
Maven 官方插件列表:https://maven.apache.org/plugins/index.html
5. 总结
- Maven 构建插件用于扩展构建过程,执行特定任务。
- 常用插件包括
maven-compiler-plugin
、maven-surefire-plugin
、maven-jar-plugin
等。 - 可以通过
<configuration>
配置插件参数,并通过<executions>
绑定插件目标到生命周期阶段。
根据项目需求选择合适的插件并配置即可。
GroupId ArtifactId Version
com.mycila license-maven-plugin 3.0
org.apache.felix maven-bundle-plugin 4.1.0
org.apache.maven.plugins maven-checkstyle-plugin 3.0.0
org.apache.maven.plugins maven-clean-plugin 3.1.0
org.apache.maven.plugins maven-compiler-plugin 3.8.0
org.apache.maven.plugins maven-deploy-plugin 3.0.0-M1
org.apache.maven.plugins maven-enforcer-plugin 3.0.0-M1
org.apache.maven.plugins maven-install-plugin 3.0.0-M1
org.apache.maven.plugins maven-jar-plugin 3.1.1
org.apache.maven.plugins maven-pdf-plugin 1.4
org.apache.maven.plugins maven-resources-plugin 3.1.0
org.apache.maven.plugins maven-scm-plugin 1.11.1
org.apache.maven.plugins maven-shade-plugin 3.2.1
org.apache.maven.plugins maven-site-plugin 3.7.1
org.apache.maven.plugins maven-surefire-plugin 3.0.0-M3
org.codehaus.mojo animal-sniffer-maven-plugin 1.17
org.codehaus.mojo clirr-maven-plugin 2.8
org.gaul modernizer-maven-plugin 1.7.1
org.jacoco jacoco-maven-plugin 0.8.5
Project Report Plugins
GroupId ArtifactId Version
com.github.spotbugs spotbugs-maven-plugin 3.1.10
org.apache.maven.plugins maven-changes-plugin 2.12.1
org.apache.maven.plugins maven-checkstyle-plugin 3.0.0
org.apache.maven.plugins maven-javadoc-plugin 3.0.1
org.apache.maven.plugins maven-jxr-plugin 3.0.0
org.apache.maven.plugins maven-pmd-plugin 3.11.0
org.apache.maven.plugins maven-project-info-reports-plugin 3.0.0
org.apache.maven.plugins maven-surefire-report-plugin 3.0.0-M3
org.codehaus.mojo clirr-maven-plugin 2.8
org.codehaus.mojo taglist-maven-plugin 2.4
org.codehaus.mojo versions-maven-plugin 2.7
org.jacoco jacoco-maven-plugin 0.8.5