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>
相关推荐
Wang's Blog1 小时前
Java 接入Redis: 服务启动停止与后台运行配置
java·服务器·redis
此时不提桶,更待何时2 小时前
01-04-B-垃圾回收面试与生产事故实战
java·jvm·面试
鹿角片ljp3 小时前
KV Cache 解析
java·算法
captain3764 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
惊讶的猫4 小时前
意图识别置信度和检索重排的分数
java
caoerzhong5 小时前
仓库管理数字化趋势解读:JeeWMS 开源 Java WMS 视角下的五个演进方向
java·开源
程序员JerrySUN5 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
Joy T6 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state
估值探索者6 小时前
【Python量化系统工程化 #08】关了 SSH 就停?systemd 让脚本开机自启 + 异常自动拉起
java·c++·人工智能·分类·数据挖掘