【发布时间】:2012-01-22 18:42:50
【问题描述】:
我对如何分发具有大量依赖项(在 Maven 中的 pom.xml 中指定)的 Java 应用程序感兴趣。
显然,可以将所有内容打包到一个大的 .jar 文件中。然而,这似乎很浪费,因为更新应用程序还需要发送所有依赖项的新副本。
所以我正在寻找一种分发应用程序的方法,该应用程序执行以下操作:
- 仅在主 .jar 文件中包含核心应用程序
- .jar 文件运行时根据需要下载依赖项
- 在本地保留依赖项的副本,以便在分发应用程序更新时无需再次下载依赖项
实现这一目标的最佳方法是什么?
【问题讨论】:
-
在有人建议之前,OSGi 在这里似乎有点过头了,但我相信它具有即时下载和更新捆绑包的出色功能,即使无需重新启动。
-
这对你现在没有帮助,但我想我会提到在 JDK 本身的层面上解决这个问题的工作正在进行中。它被称为 Project Jigsaw,目前计划包含在 JDK 8 中。在此处阅读有关它的更多信息:openjdk.java.net/projects/jigsaw
-
@ivantod:三年后。 JDK 8 出来了。还没有拼图。不过,仍在路线图上。
-
@Thilo 是的,我知道 :( Jigsaw 在 2013 年底的某个时候被转移到 JDK 9,因为他们需要更多时间。然而,去年 11 月在 Devoxx Java 会议上,Paul Sandoz 演示了一个实际的
javac能够编译模块和所有这些,所以看起来它最终可能适用于 JDK 9。但考虑到 Jigsaw 最初是为 JDK 7 设计的(信不信由你),当我相信它时看看吧。
标签: java deployment maven dependencies distribution