代码之家  ›  专栏  ›  技术社区  ›  Alexander Kondaurov

SBT,编译编译器桥

  •  4
  • Alexander Kondaurov  · 技术社区  · 6 年前

    我想用SBT建立一个Docker的形象。

    以下是我的资料:

    FROM kondaurov/jdk-alpine:jdk8slim
    
    ENV SBT_VERSION=1.2.1
    
    RUN \
     echo "$SBT_VERSION" && \
     curl -fsL https://github.com/sbt/sbt/releases/download/v${SBT_VERSION}/sbt-${SBT_VERSION}.tgz | tar xfz - -C /usr/local && \
     ln -s /usr/local/sbt/bin/* /usr/local/bin/ && \
     sbt sbtVersion
    
    ENTRYPOINT sbt
    

    当我将此图像用于我的scala项目时,我会得到:

    [warn] Run 'evicted' to see detailed eviction warnings
    
    [info] Compiling 4 Scala sources to /sbt_project/project/target/scala-2.12/sbt-1.0/classes ...
    
    [info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.6. Compiling...
    
    [info]   Compilation completed in 53.746s.
    

    如您所见,sbt总是为scala编译编译器桥,这需要一些时间。是否可以在我的图像中编译桥接器?我猜 SBT SBT版本 还不够

    1 回复  |  直到 6 年前
        1
  •  1
  •   laughedelic    6 年前

    它是在第一次编译时触发的,因此您可以更改 sbt sbtVersion 行至 sbt compile . 很可能需要在工作目录中添加一个简单的scala源文件来触发编译(然后清除生成的输出)。

    也可以设置特定的scala版本,而不创建 build.sbt :

    sbt 'set scalaVersion := "2.11.8"' compile
    

    甚至几个:

    sbt 'set crossScalaVersions := Seq("2.11.8", "2.12.6")' '+compile'