当我们使用基于JVM的语言如Java和Kotlin开发的应用程序时,我们通常会生成的一个常见文件是JAR(Java Archive)文件。
一个 JAR 文件包含了所有编译后的类文件,以及一些元数据和资源。JAR 文件还采用了 ZIP 压缩方式,这不仅减小了文件大小,也便于分发和传输。
所以,我们来看一个例子。假设你在做一个 Kotlin 项目,你的目标是构建一个可以被其他基于 JVM 的项目使用的库。
你得知道,在JVM项目的开发中,我们通过在pom.xml
或build.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这样的工具或其他资源,如果你想了解如何创建一个的话。
希望你喜欢这篇博客哦!回头见!
共同学习,写下你的评论
评论加载中...
作者其他优质文章