【问题标题】:Packaging Spring Jars in the exported Spring project - better way?在导出的 Spring 项目中打包 Spring Jars - 更好的方法?
【发布时间】: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


【解决方案1】:

使用 Maven 和“maven-assembly-plugin”。然后你只需要输入“mvn assembly:assembly”,它就会创建一个大的 .jar 文件,其中不仅包括你的类,还包括所有依赖的 jar。然后,您可以简单地使用“java -jar target/myproject-1.0-with-dependencies.jar”运行该应用程序。

您必须创建一个 src/main/resources/assembly.xml,以此处为例:http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html#jar-with-dependencies

【讨论】:

  • 对不起,我应该早点说我不能使用Maven。我支持组织代理。
  • 如果你的意思是像防火墙一样的代理,你可以在 /etc/maven/settings.xml 中配置你在浏览器中使用的相同 HTTP 代理,或者手动下载包并使用“mvn”以某种方式安装它们"(我假设您必须以某种方式手动下载依赖 jar)。至少你可以试试组装插件如何调用 jar 来构建一个包含其他依赖 jar 的 .jar。
猜你喜欢
  • 2014-09-03
  • 2017-02-22
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 2018-02-03
相关资源
最近更新 更多