当前位置:K88软件开发文章中心编程工具Gradle → 文章内容

Gradle Scala 插件

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-24 10:31:39

况下也是这样。外部过程默认使用JVM 的的默认内存设置。如果要调整内存设置,请根据需要配置scalaCompileOptions.forkOptions :调整内存设置build.gradle tasks.withType(ScalaCompile) { configure(scalaCompileOptions.forkOptions) { memoryMaximumSize = '1g' jvmArgs = ['-XX:MaxPermSize=512m'] }} 增量编译增量编译是只编译那些源代码在上一次编译之后有修改的类,及那些受这些修改影响到的类,它可以大大减少 Scala 的编译时间。频繁编译代码的增量部分是非常有用的,因为在开发时我们经常要这样做。Scala 插件现在通过集成 Zinc 来支持增量编译, 它是 sbt 增量 Scala 编译器的一个单机版本。若要把 ScalaCompile 任务从默认的基于 Ant 的编译器切换为新的基于 Zinc 的编译器,需要将 scalaCompileOptions.useAnt 设置为 false:激活基于 Zinc 编译器build.gradlev tasks.withType(ScalaCompile) { scalaCompileOptions.useAnt = false} 除非在 API 文档中另有说明,否则基于 Zinc 的据编译器支持与基于 Ant 的编译器完全相同的配置选项。但是,要注意的是,Zinc 编译器需要 Java 6 或其以上版本来运行。这意味着 Gradle 本身要使用 Java 6 或其以上版本。Scala 插件添加了一个名为 zinc 的配置,以解析 Zinc 库及其依赖。如果要重写 Gradle 默认情况下使用的 Zinc 版本,请添加一个显式的 Zinc 依赖项 (例如zinc "com.typesafe.zinc:zinc:0.1.4")。无论使用哪一个 Zinc 版本,Zinc 都是使用在scalaTools配置上找到的 Scala 编译器。就像 Gradle 上基于Ant 的编译器一样,基于 Zinc 的编译器支持 Java 和 Scala 代码的联合编译。默认情况下,在 src/main/scala 下的所有 Java 和 Scala 代码都会进行联合编译。使用基于 Zinc 的编译器时,即使是 Java 代码也将会进行增量编译。增量编译需要源代码的相关性分析。解析结果进入由 scalaCompileOptions.incrementalOptions.analysisFile 所指定的文件(它有一个合理的默认值)。在多项目构建中,分析文件被传递给下游的 ScalaCompile 任务,以启用跨项目的增量编译。对于由 Scala 插件添加的 ScalaCompile 任务,无需对这一点进行配置。对于其他的 ScalaCompile 任务,需要根据类文件夹或 Jar archive 的代码中,是哪一个的代码被传递给 ScalaCompile 任务的下游类路径,把ScalaCompileOptions.incrementalOptions.publishedCode 配置为指向它们。注意,如果publishedCode 设置不正确,上游代码发生变化时下游任务可能不会重新编译代码,导致编译结果不正确。由于依赖分析的系统开销,一次干净的编译或在代码有了较大的更改之后的编译,可能花费的时间要长于使用基于 Ant 的编译器。对于 CI 构建和版本的构建中,我们目前推荐使用基于 Ant 的编译器。注意现在 Zinc 基于守护进程模式的 Nailgun 还不支持。相反,我们打算加强 Gradle 自己的编译器守护进程,使得在跨 Gradle 调用时继续存活,利用同一个 Scala 编译器。这将会为 Scala 编译带来另一个方面上的明显加速。eclipse 集成当 Eclipse 插件遇到 Scala 项目时,它将添加额外的配置,使得项目能够在使用 Scala IDE 时开箱即用。具体而言,该插件添加一个 Scala 性质和依赖的容器。IntelliJ 集成当 IDEA 插件遇到 Scala 项目时,它将添加额外的配置,使得项目能够在使用 IDEA 时开箱即用。具体而言,该插件添加了一个 Scala facet 和一个匹配项目的类路径上的 Scala 版本的 Scala 编译器类库。

上一页  [1] [2] 


Gradle Scala 插件