【发布时间】:2013-05-30 22:02:54
【问题描述】:
我正在将一个 Spring 项目导出为 JAR。现在的问题是,我需要处理 spring jar 文件的依赖关系。
对此的一种选择是,将所有 JAR 文件包含在 MANIFEST.MF 文件的 Class-Path 标头中(脖子上的真正痛苦)。我尝试的第二个选项是使用命令行,但当然,我们不能同时使用 -cp 和 -jar 选项。一旦我们有了-jar,-cp 就会被忽略。
为了简化第一个选项,我想知道是否可以在这里引入一些通配符。所以,我试了一下,并将我的 MANIFEST 更改为:
Class-Path: lib/*
什么也没发生。这证实了 Manifest 标头不会将 * 视为通配符 -> FAILED。
然后我转向第二个选项。我在那里做了一些调整。我摆脱了 JAR 文件,并决定使用包含我的类文件的简单目录结构。然后我创建了一个 batch 文件,使用命令运行主类,使用通配符作为命令行参数传递所有 JAR 文件:
java -cp .;./* MainClass
然后我只是运行批处理文件。谢天谢地,它奏效了。但我不希望这样。
如果只有某种方法可以仅使用 JAR 文件来完成它,那将是更好的选择。我在这里有什么选择吗?我唯一怀疑的是我是否在 MANIFEST 标题中以正确的方式使用通配符? MANIFEST 标头是否考虑通配符?
注意:我不能使用 Maven。所以,这不是一个选项。
【问题讨论】:
-
如果您使用 Maven,您可以创建一个 überjar,其中包含所有依赖项以及您的应用程序代码在一个 jar 中。如果对此感兴趣,我可以为您提供更全面的答案。
标签: java spring jar manifest wildcard