我希望创建一个内置了几个SBT组件的泊坞窗图像(泊坞窗部分不相关)。如果我只是从deb或rpm安装sbt并且没有做任何事情,那么第一次调用时它仍然必须先下载互联网才能启动。
因此,我需要能够指定以下内容:
1个SBT版本 - 例如0.12,0.13.1,0.13.2,......
2 Scala版本 - 2.9.1,2.10.4,2.11.5,...
3常用库 - 播放框架等
我想知道确保这些内容已经预先缓存的最佳方法是什么。
答案 0 :(得分:2)
以下是我在Dockerfile中为预取多个scala版本所做的事情:
RUN echo 'crossScalaVersions := Seq("2.10.6", "2.11.7")' > build.sbt \
&& echo 'object Hi { def main(args: Array[String]) = println("Done") }' > src.scala \
&& sbt "+run" \
&& rm build.sbt src.scala
您可以通过在cli上指定sbt版本(sbt -Dsbt.version = 0.xy" + run")或者将一些libraryDependencies添加到build.sbt来轻松地进行自定义。
HTH
答案 1 :(得分:0)
好吧,如果您创建一个项目,其中包含您希望列为依赖项的所有内容(包括SBT和Scala版本),然后运行update
以检索所有这些依赖项,那么它们将全部缓存在{ {1}}。这应该适用于几乎所有内容,但是SBT本身似乎有大量独立的依赖关系,如here所示,或者在ivy2缓存的本地磁盘上。