让我们想象一下,我创建了一堆用Scala和/或Java编写的命令行实用程序,并且我使用SBT来构建它们。它们都使用了几个库,其中一些非常大,而对于Scala,也是(不是那么小)Scala标准库。
我希望以完全构建的形式(可运行的.jar
文件)使用这些实用程序,以便能够立即启动它们中的任何一个,并且如果需要,还可以轻松地分发它们。但我不想要的是将它们的依赖项包含在所有这些中,因为它们将占用磁盘空间。相反,我希望他们在运行时从共享文件夹中获取依赖项,而应用程序jar应该只包含" my"类。
问题是,有没有一种标准的方法来实现这一目标?如果是,那么必须共享.jar
所在的位置?否则,你会建议做什么?
答案 0 :(得分:2)
您可以为此设置CLASSPATH
。
JRE在.jar
中命名的CLASSPATH
个文件中搜索了类。
此外,还使用了目录.jar
中的所有jre/lib/ext
个文件。
要在课堂中查找完整的序列,请参阅official documentation from Oracle。
答案 1 :(得分:2)
您可能想要考虑的事情(尽管需要稍微改变您打算做的事情)是拥有本地Maven存储库。
您可以在构建时向其发布SBT库。您可以通过SBT运行应用程序,而不是构建可运行的JAR,这将在需要时从本地存储库中提取库。
这样做的好处是,所有这样做的管道都内置在SBT中,这将使分发变得微不足道。
缺点是您必须通过SBT运行应用程序,而不是构建可运行的JAR。这是否适合你,我不知道。