欢迎!请参阅关于页面以了解更多关于此的工作方式的信息。
我们需要对由 clojure.tools.build.api/uber 创建的 META-INF/MANIFEST.MF 文件进行自定义,原因有几个。
Liquibase-Package
Multi-Release: true
使用 Leiningen,您可以通过在 project.clj 中包含一个 :manifest 键来指定 manifest 的内容…将此选项添加到 tools.build 中将非常有用。
project.clj
:manifest
tools.build
关于log4j导致的性能下降,或许您可以看看这个链接https://github.com/line/armeria/issues/2306,它显示了类似症状,原因是客户端代码中的特定调用(而非log4j本身)使用了一个早已废弃的方法。
顺便一提,我们遇到了相反的问题:在添加了Multi-Release: true的检测/设置功能之前,由于回退到反射和堆栈遍历,我们在Java 11上使用log4j2(在Java 8上是正常的)时速度极慢。
log4j2
关于:manifest配置:这是depstar中已经嵌入的功能。现在它提供了一个API,可以提供对tools.build's jar和uber函数的替换(输入和返回值完全相同)。
depstar
jar
uber
如果您想使用tools.build尝试它,我很乐意将为depstar添加一个禁用多版本检测的选项?有关详细信息,请参阅https://cljdoc.org/d/com.github.seancorfield/depstar/2.1.267/doc/tools-build-usage。
作为https://clojure.atlassian.net/browse/TBUILD-5记录
在tools.build v0.1.4中添加了对自定义清单属性支持(包括自动内容的覆盖)的jar和uber任务。
(uber {... :manifest {"Liquibase-Package" "whatever" "Multi-Release" false}})