![](/img/trans.png)
[英]Quarkus 2.0 maven build is not creating uber-jar for AWS lambda
[英]Creating an uber jar from within Java (NOT using Maven or Gradle)
我想将几个 jars 组合成一个 Uberjar。
在 Java 中,我知道如何使用这两个工具来隐藏依赖关系:
但我有一个 web 服务需要采用动态类路径并从中创建一个 uberjar。 但由于它实际上是一个后端服务器,因此 Maven 和 Gradle 不是可用的工具。
从这些插件的源代码中可以看出,这并不像构建一个包含所有内容的组合 zip 文件那么简单。 您必须对重复资源进行一些解析,以及一些特殊的 log4j 缓存配置。
是否有一个 Java 库能够创建与 John Rengelman 的影子工具相同的功能,但实际上无需从 Maven/Gradle 运行?
实际上,这很容易做到。
您创建一个ZipArchiveOutputStream
并遍历每个 jar 文件。 您将每个 jar “应用”到 output stream 就像您 Z34D1F91FB2E5714B857BZA1A89
但是 - 您必须确保排除这些文件:
这可行,但会导致日志记录出现此问题: log4j2 ERROR StatusLogger Unrecognized conversion specifier
然后你必须像 class 那样正确处理 Log4j2 插件缓存文件:
这现在对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.