Maven 与 Gradle 构建 Fat-Jar 工程

本贴最后更新于 2143 天前,其中的信息可能已经时移世易

Maven 与 Gradle 相信大家非常清楚,但是 fat-jar 是个什么鬼?长得比较胖的 jar 包吗?没错,就是比较胖的 jar 包...这篇文章介绍如何在 Maven 跟 Gralde 中构建这些胖子 jar 包 ❤️

首先上项目源代码:

Fat-Jar

用过大红大紫的 SpringBoot,就知道它的打包结果就是一个 Fat-Jar: 将项目代码以及所依赖的第三方 Jar 包,全部打包到一个 Jar 包中即为 Fat-Jar 技术~~~~

具体使用哪种 Fat-Jar 实现方式,一般而言根据我们所使用的依赖管理工具来决定,这里我们举 Gradle 跟 Maven 这两个最常见的依赖管理工具来举例

Gradle-plugin: shadowJar

如果我们是使用的 Gradle 来构建项目,那么可以使用 shadowJar 这一款 plugin 来将项目打包为一个"胖子 jar 包"

案例代码:

在项目的 build.gradle 中添加以下代码:

apply plugin: "com.github.johnrengelman.shadow" jar.enabled = false assemble.dependsOn(shadowJar) shadowJar { baseName = 'dates-and-times-in-jdk1.8' classifier = null version = 'v1.0.0' manifest { attributes 'Main-Class': 'com.liumapp.tutorials.time.Console' } }

具体使用请参考文章开头的源码链接

Maven-plugin: maven-assembly-plugin

如果我们是使用 Maven 来构建项目的话,那么可以使用 maven-assembly-plugin 来将项目打包为一个“胖子 jar 包”

在项目 pom.xml 文件中添加以下代码:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.4.1</version> <configuration> <!-- get all project dependencies --> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <!-- MainClass in mainfest make a executable jar --> <archive> <manifest> <mainClass>com.liumapp.workable.converter.Console</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <!-- bind to the packaging phase --> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>

具体使用请参考文章开头的源码链接

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3194 引用 • 8214 回帖
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 262 关注
  • Gradle
    41 引用 • 20 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...