maven-plugin-shade 详解1

maven-plugin-shade 是 Maven 的一个插件,它的作用是将多个 jar 包合并成一个 jar,同时将其中的依赖关系也合并到该 jar 中。这个插件常用于创建可执行 jar 包和打包 web 应用程序。

下面是 maven-plugin-shade 的一些常用配置:

  1. 打包的形式:可以设置打包成一个可执行的 jar 包或者一个普通的 jar 包。

  2. 排除依赖:可以设置排除某些依赖,避免重复打包。

  3. 过滤资源:可以通过配置来过滤掉一些不需要打包的资源。

  4. 重新定位依赖:如果合并后的依赖不能与原来的 jar 包兼容,可以通过重新定位的方式来解决。

  5. 转换类文件:可以对 class 文件进行转换,比如修改包名或类名等。

使用 maven-plugin-shade 打包 jar 包的步骤如下:

  1. 在 pom.xml 文件中添加 maven-shade-plugin 插件。

  2. 配置要合并的 jar 包以及排除的依赖、过滤资源等信息。

  3. 运行 Maven 命令进行打包。

示例:

xml 复制代码
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.1</version>
      <configuration>
        <createDependencyReducedPom>true</createDependencyReducedPom>
        <shadedArtifactAttached>true</shadedArtifactAttached>
        <shadedClassifierName>executable</shadedClassifierName>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>${mainClass}</mainClass>
          </transformer>
        </transformers>
        <filters>
          <filter>
            <artifact>*:*</artifact>
            <excludes>
              <exclude>META-INF/*.SF</exclude>
              <exclude>META-INF/*.DSA</exclude>
              <exclude>META-INF/*.RSA</exclude>
            </excludes>
          </filter>
        </filters>
      </configuration>
    </plugin>
  </plugins>
</build>

在配置中,我们设置了要创建一个可执行的 jar 包,并指定了 mainClass。同时,我们设置了过滤规则,排除了一些不需要打包的文件。

运行 Maven 命令 mvn package 进行打包,就会在 target 目录下生成一个可执行的 jar 包。

相关推荐
Mryan200513 小时前
解决GraalVM Native Maven Plugin错误:JAVA_HOME未指向GraalVM Distribution
java·开发语言·spring boot·maven
依旧很淡定20 小时前
IntelliJ IDEA更改Maven工程名称
maven·修改名称
别惊鹊3 天前
(三)安装和使用Maven
java·maven
腥臭腐朽的日子熠熠生辉3 天前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
伊成3 天前
Springboot整合Mybatis+Maven+Thymeleaf学生成绩管理系统
java·maven·mybatis·springboot·学生成绩管理系统
汤姆大聪明3 天前
Redisson 操作 Redis Stream 消息队列详解及实战案例
redis·spring·缓存·maven
努力的搬砖人.3 天前
maven如何使用
java·后端·面试·maven
_Djhhh4 天前
基于SpringAOP面向切面编程的一些实践(日志记录、权限控制、统一异常处理)
java·spring boot·spring·maven·sprint
佩奇的技术笔记4 天前
中级:Maven面试题精讲
java·面试·maven
数据攻城小狮子4 天前
Java Spring Boot 与前端结合打造图书管理系统:技术剖析与实现
java·前端·spring boot·后端·maven·intellij-idea