maven插件

编译

  • maven-compiler-plugin:
    功能‌:编译Java源代码
    ‌作用‌:将src/main/java目录下的Java文件编译为字节码(.class文件)
    ‌典型配置‌:
xml 复制代码
<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> <!-- 目标版本 -->
    <encoding>UTF-8</encoding> <!-- 编码 -->
  </configuration>
</plugin>
  • maven-source-plugin:
    功能:生成项目源码JAR包
    作用:将源代码打包成独立的JAR文件,便于其他开发者查看和调试
    使用场景:开源项目分发、团队协作开发、依赖项目调试
    典型配置:
xml 复制代码
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <version>3.3.0</version>
  <executions>
    <execution>
      <id>attach-sources</id>
      <goals>
        <goal>jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>

打包

  • maven-shade-plugin:
    功能‌:生成可执行的Fat Jar
    ‌作用‌:将项目及其依赖打包到一个JAR文件中
    ‌典型配置‌:
xml 复制代码
<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.MainClass</mainClass>
          </transformer>
        </transformers>
      </configuration>
    </execution>
  </executions>
</plugin>
  • spring-boot-maven-plugin:
    ‌功能‌:Spring Boot项目专用打包插件
    ‌作用‌:
    重新打包生成可执行Fat Jar
    包含所有依赖到BOOT-INF/lib目录
    生成Shebang头(Linux可直接执行)
    ‌使用场景‌:
    生成可执行JAR(java -jar启动)
    处理依赖冲突(避免类路径问题)
    ‌特点‌:
    通过repackage目标重新处理JAR
    保留原始JAR备份(.original)
    自动处理Spring Boot启动机制
    配置选项:
    显式指定启动类(多主类场景)
    启用Systemd支持
xml 复制代码
<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <version>2.7.10</version>
  <configuration>
    <executable>true</executable>
    <mainClass>com.example.MainClass</mainClass>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
    </execution>
  </executions>
</plugin>

调试

  • exec-maven-plugin:
    功能‌:运行Java主类
    ‌作用‌:在命令行直接执行Java程序
    ‌典型配置‌:
xml 复制代码
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>3.1.0</version>
  <configuration>
    <mainClass>com.example.MainClass</mainClass>
    <arguments>
      <argument>arg1</argument>
      <argument>arg2</argument>
    </arguments>
  </configuration>
</plugin>
  • maven-dependency-plugin:
    ‌功能‌:项目依赖管理插件
    ‌作用‌:
    分析依赖树(dependency:tree)
    复制依赖文件到指定目录
    解压依赖(类隔离)
    清理本地仓库
    ‌使用场景‌:
    依赖冲突排查
    生成依赖报告
    生成可执行JAR(maven-shade-plugin)
    ‌特点‌:
    多目标支持(如analyze、copy)
    通过绑定生命周期
    支持Java 9模块(resolve目标)
    ‌典型配置‌:
    analyze>分析依赖冲突
    copy-dependencies>复制依赖
xml 复制代码
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.3.0</version>
  <executions>
    <execution>
      <id>analyze</id>
      <goals>
        <goal>analyze</goal>
      </goals>
    </execution>
  </executions>
</plugin>

资源过滤

  • maven-resource-plugin:
    ‌功能‌:处理项目资源文件
    ‌作用‌:
    复制资源文件到输出目录(如target/classes)
    支持占位符过滤(property)包含静态资源(如配置文件、模板)‌使用场景‌:多环境配置(如application−{property}) 包含静态资源(如配置文件、模板) ‌使用场景‌: 多环境配置(如application-property)包含静态资源(如配置文件、模板)‌使用场景‌:多环境配置(如application−{env}.yml)
    生成可执行JAR(spring-boot-maven-plugin)
    ‌特点‌:
    默认处理src/main/resources目录
    通过绑定生命周期
    支持资源压缩(配置)
    典型配置‌:
    true>启用占位符替换
    />文件过滤
xml 复制代码
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <version>3.3.0</version>
  <configuration>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
  </configuration>
</plugin>
相关推荐
Mahir085 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
RyFit6 小时前
SpringAI 常见问题及解决方案大全
java·ai
石山代码6 小时前
C++ 内存分区 堆区
java·开发语言·c++
绝知此事7 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
无风听海7 小时前
C# 隐式转换深度解析
java·开发语言·c#
一只大袋鼠7 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git
德思特8 小时前
从 Dify 配置页理解 RAG 的重要参数
java·人工智能·llm·dify·rag
YOU OU8 小时前
Spring IoC&DI
java·数据库·spring
один but you9 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
是码龙不是码农9 小时前
ThreadPoolExecutor 7 个核心参数详解
java·线程池·threadpool