WAR/JAR/EAR中MANIFEST.MF的作用是什么?

23

我知道在移动应用程序中使用 MANIFEST 文件,但不知道在 Java 应用程序中使用它的情况。

我猜它只是被用来保存构建信息。我的猜测正确吗?

这是强制性的吗?如果不是,那么我们可以从中获得哪些关键好处?


例如,您可以按照此处的说明(http://www.jcabi.com/jcabi-manifests/versioning.html)将其用于版本控制。 - yegor256
1个回答

20

manifest.mf 包含了构件的属性。其中最著名的一个是例如 jar 的主类,当没有指定其他类时,该主类用于启动 jar 文件。语法:

Main-Class: classname

其他用途包括打包封装和版本控制。查看 Java 教程了解更多信息:http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html

相比例如 AndroidManifest.xml,JAR 文件中的清单通常包含的信息要少得多。它是相当轻量级的,不包含任何构建或打包信息。

这是因为 Java 没有好的模块系统。所以,一个 JAR 文件不是一个模块,它可能需要大量配置信息(比如依赖的模块列表)。相反,一个 JAR 文件只是一堆带有一些配置信息的类。希望通过 project jigsawhttp://openjdk.java.net/projects/jigsaw/)来解决这个问题。


现在我的清单文件只有"Manifest-Version: 1.0"。但是我的应用程序仍然可以正常运行。 - Ashish Agarwal
当然,清单文件并非必需品。它只是能够携带有关JAR包的附加信息。 - gexicide
我想在这里做一个比较,就像在移动应用程序中,如果没有该应用程序是无法运行的,但是对于Jar等情况则不一样,为什么呢? - Ashish Agarwal
3
简单回答:Java编程语言不需要这样做 :). 你在谈论哪个移动平台? - gexicide
2
除非您需要教程中描述的某个东西,否则您不需要考虑编写清单。与Android相比,它更加轻量级,仅包含一些可选的配置信息,没有更多的内容。 - gexicide
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接