在 Maven 项目中,**Project Build Plugins** 是用于扩展 Maven 构建过程的工具

本文详细介绍了 Maven 项目的常见插件配置,包括 license-maven-plugin、maven-bundle-plugin 和 maven-checkstyle-plugin 等,为开发者提供了一个全面的 Maven 插件使用参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 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-plugincopy-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-pluginmaven-surefire-pluginmaven-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
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值