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

使用 maven-shade-plugin 打包你的 Maven 项目

在Java开发中,当我们需要将应用程序及其所有依赖项打包成一个单一的可执行Jar文件时,maven-shade-plugin是一个非常有用的Maven插件。这种所谓的“uber-jar”或“fat-jar”可以方便地部署和分发,因为它不依赖于外部的库文件。

什么是 maven-shade-plugin

maven-shade-plugin 是一个Maven插件,它可以在构建过程中创建一个包含所有依赖项的Jar文件。与 maven-assembly-plugin 不同,maven-shade-plugin 会在最终的Jar文件中重写依赖项的元数据,以避免在运行时出现冲突。

为什么使用 maven-shade-plugin

  • 简化部署:生成的Jar文件包含了所有依赖项,无需额外的库文件。
  • 避免类冲突:插件会重命名冲突的类文件,以确保运行时的稳定性。
  • 资源合并:可以合并META-INF中的资源文件,如MANIFEST.MF。

如何配置 maven-shade-plugin

以下是如何在 pom.xml 文件中配置 maven-shade-plugin 的步骤:

  1. 添加插件到 pom.xml
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version> <!-- 使用最新的稳定版本 -->
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <!-- 配置 transformer 来合并服务文件 -->
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                            <!-- 配置 transformer 来合并MANIFEST.MF -->
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.example.MainClass</mainClass> <!-- 指定主类的全限定名 -->
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  1. 指定主类:在 ManifestResourceTransformer 中的 mainClass 配置项用于指定项目的主入口类。

  2. 运行构建:配置完成后,运行以下命令来构建项目:

mvn clean package

这将生成一个包含所有依赖项的Jar文件,通常位于 target 目录下。

运行打包的 Jar

生成的 Jar 文件将是一个可执行的 Jar,你可以使用以下命令来运行它:

java -jar target/your-artifact-name-version-shade.jar

请确保替换 your-artifact-name-version-shade.jar 为你的实际 Jar 文件名。

注意事项

  • 在使用 maven-shade-plugin 时,务必确保所有必要的资源和配置文件都被正确包含和合并。
  • 如果你的项目中有需要特殊处理的资源文件,你可能需要添加额外的 transformer 来处理这些文件。
  • 在某些情况下,你可能需要排除某些特定的依赖项或资源文件,这可以通过配置 excludesincludes 来实现。

通过使用 maven-shade-plugin,你可以轻松地将你的 Maven 项目及其所有依赖项打包成一个单一的可执行 Jar 文件,简化了部署和分发过程。希望这篇文章能帮助你更好地利用这个强大的Maven插件。如果你有任何疑问或需要进一步的帮助,请随时在评论区留言。


http://www.kler.cn/news/341884.html

相关文章:

  • 战略会牺牲眼前利益
  • 软考江湖,谁才是那把“最靓的剑”?
  • 利士策分享,黄金赚钱时段揭秘
  • wsl环境下安装Ubuntu,并下载MySQL5.7
  • SQL优化技巧(如查询优化、索引优化)。分布式系统的基本概念及挑战(如数据一致性、服务发现、负载均衡)
  • 【Sqlite】sqlite内部函数sqlite3_value_text特性
  • 【科普】PyTorch和Tensorflow分别是什么?两者之间有什么异同?
  • 【论文阅读】SRCNN
  • 操作系统 | 学习笔记 | 王道 | 4.3 文件系统
  • javaweb - 请求响应02
  • 深入理解链表(SList)操作
  • python+pytest+request 接口自动化测试
  • SpringBoot框架下的服装生产管理解决方案
  • (C语言贪吃蛇)10.贪吃蛇向右自行行走
  • 数字安全新时代:聚焦关键信息基础设施安全保障——The Open Group 2024生态系统架构·可持续发展年度大会盛大来袭
  • Python 工具库每日推荐 【Pandas】
  • 基于SSM的大学生勤工助学管理系统(含源码+sql+视频导入教程+文档+PPT)
  • Ubuntu22.04之mpv播放器高频快捷键(二百七十)
  • 如何在RuoYi-Vue项目中去除`/dev-api`前缀
  • Vue 响应式的本质