【发布时间】:2017-08-22 17:18:01
【问题描述】:
我正在构建一个有两个发行版的 java 服务。每个发行版必须构建不同(一个内部有一个 spring-boot 嵌入式码头服务器,另一个没有)。在这两种情况下,我都创建了一个具有依赖项的发行版,除了一个(已经实现)。没有码头的罐子是使用maven-assembly-plugin(类似于这里的Problems running executable jar with dependencies)构建的,另一个使用spring-boot-maven-plugin(见http://docs.spring.io/spring-boot/docs/current/maven-plugin/usage.html)。我的问题是外部依赖项。
我想添加一个对 runtime 的额外依赖,但我不想使用我们的 OSGi
在这两个构建过程中,结果都是一个“可执行”jar,我可以这样运行:
java -jar my.jar
但我不知道如何解决其他依赖项。如果我在 my.jar 中运行上面没有外部依赖项(比如说 external.jar)的命令将失败,即使在同一个文件夹中也是如此。我可以让它在没有码头的情况下像这样用于分发:
java -classpath "./*" my.main.App
但这不适用于 my-with-jetty.jar。我也尝试运行:
java -classpath "./*" -jar my-with-jetty.jar
这根本行不通。
所以我的问题是:
是否有可能为这两种情况打包一个几乎所有依赖项的 jar?
是否可以将 jar 打包为可运行的 jar,这样就不需要提供主类?
当然,如果是的话,怎么做?我想以相同的方式运行两个发行版。
我想要类似的行为:
java -cp "./*" java -jar my.jar conf.cfg
和
java -cp "./*" java -jar my-rest.jar conf.cfg
谢谢。
【问题讨论】:
标签: java maven spring-boot jar