使用SBT预取SBT版本,Scala和Ivy Resources以创建图像

时间:2015-02-01 01:16:05

标签: scala sbt

我希望创建一个内置了几个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常用库 - 播放框架等

我想知道确保这些内容已经预先缓存的最佳方法是什么。

2 个答案:

答案 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缓存的本地磁盘上。