【发布时间】:2022-01-26 12:18:56
【问题描述】:
我想将几个罐子合并成一个 Uberjar。
在 Java 中,我知道如何使用这两个工具来隐藏依赖关系:
- https://maven.apache.org/plugins/maven-shade-plugin/
- https://plugins.gradle.org/plugin/com.github.johnrengelman.shadow
但我有一个需要采用动态类路径并从中创建 uberjar 的 Web 服务。但由于它实际上是一个后端服务器,因此 Maven 和 Gradle 不是可供使用的工具。
从这些插件的源代码中可以看出,它并不像构建一个包含所有内容的组合 zip 文件那么简单。您必须对重复资源进行一些解析,以及一些特殊的 log4j 缓存配置。
是否有一个 Java 库能够创建与 John Rengelman 的影子工具相同的功能,但无需实际从 Maven/Gradle 运行?
【问题讨论】:
-
“但由于它实际上是一个后端服务器,Maven 和 Gradle 不是可供使用的工具。”。实际上没有什么可以阻止您的后端服务器安装 Maven 或 Gradle。
-
嗯,在生产服务器上安装编译工具被认为是一种安全风险,所以我理解你为什么不想这样做。
-
是的,我也是这么想的@Kayaman。这会有点奇怪,但最终我认为这是可行的。不过最后的手段。
标签: java maven gradle dependencies uberjar