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>
相关推荐
spencer_tseng1 小时前
Stream not available [SysDictDataMapper.xml]
xml·java
蒸蒸yyyyzwd6 小时前
cpp对象模型学习笔记1.1-2.8
java·笔记·学习
程序员徐师兄7 小时前
Windows JDK11 下载安装教程,适合新手
java·windows·jdk11 下载安装·jdk11 下载教程
RANCE_atttackkk7 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
五岳7 小时前
DTS按业务场景批量迁移阿里云MySQL表实战(下):迁移管理平台设计与实现
java·应用·dts
zhougl9968 小时前
Java 所有关键字及规范分类
java·开发语言
Python 老手8 小时前
Python while 循环 极简核心讲解
java·python·算法
java1234_小锋8 小时前
Java高频面试题:MyISAM索引与InnoDB索引的区别?
java·开发语言
Mr_Xuhhh8 小时前
MySQL函数详解:日期、字符串、数学及其他常用函数
java·数据库·sql
测试开发Kevin9 小时前
小tip:换行符CRLF 和 LF 的区别以及二者在实际项目中的影响
java·开发语言·python