为了账号安全,请及时绑定邮箱和手机立即绑定

什么是胖jar包?

标签:
Java JVM

当我们使用基于JVM的语言如Java和Kotlin开发的应用程序时,我们通常会生成的一个常见文件是JAR(Java Archive)文件

一个 JAR 文件包含了所有编译后的类文件,以及一些元数据和资源。JAR 文件还采用了 ZIP 压缩方式,这不仅减小了文件大小,也便于分发和传输。

所以,我们来看一个例子。

假设你在做一个 Kotlin 项目,你的目标是构建一个可以被其他基于 JVM 的项目使用的库。

你得知道,在JVM项目的开发中,我们通过在pom.xmlbuild.gradle文件中添加依赖项来导入库。这些依赖项通常会从Maven中央仓库下载。

现在我们的目标是,也让新建立的库能够通过Maven中央仓库获取,这样其他人就能用了。

你认为我们应该发布什么到 Maven 中央仓库作为我们项目的构件?

你说得没错,我们将发布的是一个JAR文件,因为它包含了所有我们打算分发的编译后的类文件。

好吧,到目前为止我们一直在讨论JAR文件。胖jar文件又是怎么回事?胖jar文件到底是什么?

让我们通过那个示例项目继续理解同样的概念。假设你也想将同一项目作为命令行界面(CLI,即Command Line Interface的缩写)分发,这样用户就能够在他们的命令行界面中直接运行它。

为了让JAR文件能够运行,我们需要包含一个META-INF/MANIFEST.MF文件,该文件指定了命令行程序的入口。

一旦我们做到了那一步,就可以用命令 java -jar <jar-file> 运行 JAR 文件了。

但当你运行这个命令时,它会吐出一些依赖相关的错误。

那是因为,在创建JAR文件时,默认情况下它并不会包括所有的依赖库。因此,如果我们尝试运行这个JAR文件,会遇到缺少依赖库的错误。

要解决这个问题,我们需创建一个 胖Jar文件,正如你可能已经猜到的,这是一个包含所有依赖和我们项目Jar文件的胖Jar文件。

这样的一胖JAR文件就可以直接运行而不会出错。它实际上是一个自包含的文件,无需依赖任何外部文件即可运行。

—— ——

CLI 应用程序就是一个 fat JAR 很有用的实例。在其他一些场景中也可能很有用。

要创建一个胖Jar,你可以使用例如https://github.com/johnrengelman/shadow这样的插件。

此外,你可以寻求像ChatGPT这样的工具或其他资源,如果你想了解如何创建一个的话。

希望你喜欢这篇博客哦!回头见!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消