我正在将一个弹簧项目导出为JAR。现在的问题是,我需要处理spring jar文件依赖项。
一个选项是,包括 MANIFEST.MF 文件的Class-Path
标题中的所有JAR文件(颈部的真实疼痛)。我尝试的第二个选项是使用命令行,但当然,我们不能同时使用-cp
和-jar
选项。我们-jar
后,-cp
将被忽略。
为了缓解第一个选项,我想知道我是否可以在这里引入一些通配符。所以,我试了一下,改变了我的清单:
Class-Path: lib/*
什么都没发生。这确认了Manifest标头不会将*
视为通配符 - >的 FAILED
然后我转到了第二个选项。我做了一点调整。我摆脱了JAR文件,并决定使用包含我的类文件的简单目录结构。然后我创建了一个批处理文件,其中包含运行主类的命令,使用通配符作为命令行参数传递所有JAR文件:
java -cp .;./* MainClass
然后我只是运行批处理文件。谢天谢地,它有效。但我不希望这样。
如果只有某种方法可以使用JAR文件完成它,那将是更好的选择。我有什么选择吗?我唯一怀疑的是我在MANIFEST标题中使用Wildcards的正确方法吗? MANIFEST标题是否完全考虑通配符?
注意:我无法使用Maven。所以,这不是一个选择。
答案 0 :(得分:0)
使用Maven和“maven-assembly-plugin”。然后你只需要输入“mvn assembly:assembly”它就会创建一个大的.jar文件,它不仅包括你的类,还包括所有dependend 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