如何为具有SBT的库构建分层JAR文件?

时间:2015-10-28 12:35:29

标签: sbt

我在需要一些依赖项的库中工作。 为了便于部署,我想创建一个包含所有内容的JAR文件,包括依赖项。

我尝试过sbt-assembly - 这很有效,但由于法律原因,它可能是不可取的,所以我正在寻找一个解决方案,其中生成的JAR文件里面有原始的JAR文件,以及MANIFEST中的类路径条目设置.MF,以便客户端类可以将这个“嵌套的JAR文件”添加到它们的类路径中。

这样的事情是否可能? sbt-one-jar几乎可以,我想要什么,但仅限于可执行文件 - 我的产品会产生一个库,所以这不是一个完美的选择。

至于我到目前为止使用SBT,SBT插件最容易使用,因为将每个转换为maven或gradle或者......现在是相当多的工作。

1 个答案:

答案 0 :(得分:0)

在仔细思考了课程查找的工作原理之后,我们专门放弃了这个实验。 基本上,类由ClassLoader实例加载,应用程序的标准类加载器使用固定策略来查找如何在JAR文件或目录中查找类。 似乎允许库位于分层JAR文件中,我们还必须为此库(即库客户端)的用户提供一个特殊的类加载器,以便我们的客户端可以加载所有需要的来自分层JAR的类。

这太值值了 - 分层JAR的整个想法只是为了简化部署,并且不得不兼顾自己的类加载器会使这种简化无效。

总之 - 可能,但可能不值得努力。