2

我正在将一个 Spring 项目导出为 JAR。现在的问题是,我需要处理 spring jar 文件的依赖关系。

一种选择是,将所有 JAR 文件包含在MANIFEST.MFClass-Path文件的标题中(脖子上的真正痛苦)。我尝试的第二个选项是使用命令行,但当然,我们不能同时拥有和选项一起工作。一旦我们拥有,将被忽略。-cp-jar-jar-cp

为了简化第一个选项,我想知道是否可以在这里引入一些通配符。所以,我试了一下,并将我的清单更改为:

Class-Path: lib/*

没啥事儿。这证实了 Manifest 标头不被*视为通配符 -> FAILED

然后我转向第二个选项。我在那里做了一些调整。我摆脱了 JAR 文件,并决定使用包含我的类文件的简单目录结构。然后我创建了一个批处理文件,使用命令运行主类,使用通配符作为命令行参数传递所有 JAR 文件:

java -cp .;./* MainClass

然后我只是运行批处理文件。谢天谢地,它奏效了。但我不想这样。

如果只有某种方法可以仅使用 JAR 文件来完成它,那将是更好的选择。我在这里有什么选择吗?我唯一怀疑的是我是否在 MANIFEST 标题中以正确的方式使用通配符?MANIFEST 标头是否考虑通配符?


注意:我不能使用 Maven。所以,这里不是一个选择。

4

1 回答 1

0

使用 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

于 2013-06-05T00:43:36.010 回答