当前位置: 首页 > article >正文

Maven 插件与目标(Goals)

Maven 插件是 Maven 生态的重要组成部分,它们提供了扩展功能,使得 Maven 不仅能进行构建管理,还能执行编译、打包、测试、文档生成、部署等多种任务。

在 Maven 中,每个插件都由多个 目标(Goal) 组成。目标是插件的具体执行任务,例如 maven-compiler-plugin 插件的 compile 目标用于编译 Java 代码。

本篇博客将介绍 常用的 Maven 插件,并探讨如何使用这些插件执行目标(Goals)。


1. Maven 插件概述

Maven 插件主要分为两类:

  1. 构建插件(Build Plugin):用于管理项目的构建过程,如编译、测试、打包等。
  2. 报告插件(Reporting Plugin):用于生成项目的文档和报告,如代码质量检查、测试覆盖率等。

1.1 插件的基本语法

pom.xml 中,插件通常位于 <build> 部分,语法如下:

<build>
    <plugins>
        <plugin>
            <groupId>插件的 groupId</groupId>
            <artifactId>插件的 artifactId</artifactId>
            <version>插件的版本</version>
            <executions>
                <execution>
                    <phase>绑定的构建阶段</phase>
                    <goals>
                        <goal>执行的目标</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- 可选的配置 -->
            </configuration>
        </plugin>
    </plugins>
</build>

示例:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这个示例定义了 maven-compiler-plugin 插件,它在 compile 阶段执行 compile 目标,用于编译 Java 源代码。


2. 常用 Maven 插件

2.1 编译插件(maven-compiler-plugin)

作用:用于编译 Java 代码。

目标(Goals)

  • compile:编译 src/main/java 目录下的 Java 源文件。
  • testCompile:编译 src/test/java 目录下的测试代码。

示例

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

运行方式

mvn compile

2.2 清理插件(maven-clean-plugin)

作用:删除 target/ 目录,清理编译输出。

目标(Goals)

  • clean:删除 target/ 目录中的所有文件。

示例

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-clean-plugin</artifactId>
    <version>3.1.0</version>
</plugin>

运行方式

mvn clean

2.3 资源处理插件(maven-resources-plugin)

作用:处理资源文件,如 src/main/resources 目录中的 properties 文件。

目标(Goals)

  • resources:复制 src/main/resources 目录下的资源到 target/classes
  • testResources:复制 src/test/resources 目录下的资源到 target/test-classes

示例

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.2.0</version>
</plugin>

运行方式

mvn resources:resources

2.4 测试插件(maven-surefire-plugin)

作用:运行单元测试(JUnit、TestNG)。

目标(Goals)

  • test:运行单元测试。

示例

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M5</version>
</plugin>

运行方式

mvn test

2.5 JAR 打包插件(maven-jar-plugin)

作用:创建 JAR 包。

目标(Goals)

  • jar:创建 target/*.jar 文件。

示例

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.2.0</version>
</plugin>

运行方式

mvn package

2.6 依赖管理插件(maven-dependency-plugin)

作用:管理项目的依赖,如下载、复制、解析依赖。

目标(Goals)

  • copy-dependencies:复制所有依赖到指定目录。
  • tree:显示依赖树。

示例

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.1.2</version>
</plugin>

运行方式

mvn dependency:tree

2.7 Tomcat 插件(tomcat7-maven-plugin)

作用:用于在 Tomcat 容器中部署 Web 项目。

目标(Goals)

  • run:在嵌入式 Tomcat 服务器中运行 Web 项目。
  • deploy:部署 Web 应用到远程 Tomcat 服务器。

示例

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <path>/</path>
        <port>8080</port>
    </configuration>
</plugin>

运行方式

mvn tomcat7:run

3. 如何手动执行插件目标(Goal)

除了绑定插件到构建生命周期外,Maven 允许手动执行插件目标。例如:

mvn [插件名]:[目标]

例如:

mvn compiler:compile
mvn surefire:test
mvn dependency:tree

4. 自定义插件执行

可以使用 <executions>pom.xml 中自定义插件执行的生命周期。例如:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

5. 总结

  • Maven 插件 提供了扩展功能,使得 Maven 可以执行编译、打包、测试、部署等任务。
  • 插件包含 多个目标(Goals),可以通过 mvn 插件:目标 执行。
  • 常用插件maven-compiler-pluginmaven-surefire-pluginmaven-jar-plugin 等。
  • 可以手动执行插件目标,或者在 pom.xml 中绑定插件到构建生命周期。

掌握 Maven 插件和目标的用法,可以让构建管理更加高效和灵活!🚀


http://www.kler.cn/a/537379.html

相关文章:

  • 机器学习之心的创作纪念日
  • 小哆啦探秘《JavaScript高级程序设计》
  • MySQL 递归查询:with recursive
  • 深度学习:解码智能的“数字炼金术”
  • unity学习32:角色相关1,基础移动控制
  • MySQL第四次实验
  • VSCode使用总结
  • 探讨如何在AS上构建webrtc(2)从sdk/android/Build.gn开始
  • SpringBoot3 + Jedis5 + Redis集群 如何通过scan方法分页获取所有keys
  • 【大数据技术】Kafka实时分析用户行为日志(python+zookeeper+kafka)
  • VsCode创建VUE项目
  • 数据库操作与数据管理——Rust 与 SQLite 的集成
  • csv-parser在C++17下from_chars函数问题
  • 【GitLab CI/CD 实践】从 0 到 1 搭建高效自动化部署流程
  • Git命令缩写配置(git命令设置别名)
  • DFX(Design for eXcellence)架构设计全解析:理论、实战、案例与面试指南*
  • enableEdgeToEdge
  • 深度分析:网站快速收录与网站内容多样性的关系
  • java程序员面试自身优缺点,详细说明
  • Git命令的复习
  • SpringAI系列 - 使用LangGPT编写高质量的Prompt
  • NodeList 对象
  • Java-序列化
  • BUU24 [GXYCTF2019]BabyUpload 1
  • qt6.8安装mysql8.0驱动
  • PostgreSQL-字符串函数