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

Gradle Scala 插件

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

由 珍珍阿姨 创建, 最后一次修改 2016-08-12 Scala 插件Scala 的插件继承自 Java 插件并添加了对 Scala 项目的支持。它可以处理 Scala 代码,以及混合的 Scala 和 Java 代码,甚至是纯 Java 代码(尽管我们不一定推荐使用)。该插件支持联合编译,联合编译可以通过 Scala 及 Java 的各自的依赖任意地混合及匹配它们的代码。例如,一个 Scala 类可以继承自一个 Java 类,而这个 Java 类也可以继承自一个 Scala 类。这样一来,我们就能够在项目中使用最适合的语言,并且在有需要的情况下用其他的语言重写其中的任何类。用法要使用 Scala 插件,请在构建脚本中包含以下语句:使用 Scala 插件build.gradle apply plugin: 'scala' 任务Scala 的插件向 project 中添加了以下任务。表 25.1. Scala 插件 - 任务任务名称依赖于类型描述compileScalacompileJavaScalaCompile编译production 的 Scala 源文件。compileTestScalacompileTestJavaScalaCompile编译test 的 Scala 的源文件。SourceSetScalaSourceSetJavaScalaCompile编译给定的source set 里的 Scala 源文件。scaladoc-scaladoc为production 里的 Scala 源文件生成 API 文档。Scala 插件向 Java 插件所加入的 tasks 添加了以下的依赖。表 24.2. Scala 感觉 插件 - 额外的 task 依赖任务名称依赖于classescompileScalatestClassescompileTestScalasourceSetClassesSourceSetScala图 25.1. Scala 插件-任务 项目布局Scala 插件会假定如下所示的项目布局。所有 Scala 的源目录都可以包含 Scala和Java 代码。Java 源目录只能包含 Java 源代码。这些目录不一定是存在的,或是里面包含有什么内容;Scala 插件只会进行编译,而不管它发现什么。表 25.3. Scala 插件 - 项目布局目录意义src/main/java产品的Java源代码src/main/resources产品的资源src/main/scalaProduction Scala 源代码。此外可能包含联合编译的 Java 源代码。src/test/javaJava 测试源代码src/test/resources测试资源src/test/scalaTest Scala 源代码。此外可能包含联合编译的 Java 源代码。sourceSet/java给定的源集的Java源代码sourceSet/resources给定的源集的资源sourceSet/scala给定的source set 的 Scala 源代码。此外可能包含联合编译的 Java 源代码。更改项目布局和 Java 插件一样,Scala 插件允许把 Scala 的 production 和 test 的源文件配置为自定义的位置。自定义 Scala 源文件布局build.gradle sourceSets { main { scala srcDirs = ['src/scala'] } } test { scala srcDirs = ['test/scala'] } }} 依赖管理Scala 项目需要声明一个 scala-library 依赖项。这个依赖会在编译和运行的类路径时用到。它还将用于分别获取 Scala 编译器及 Scaladoc 工具。如果 Scala 用于 production 代码, scala-library 依赖应该添加到 compile 的配置中:为production 代码定义一个Scala 依赖build.gradle repositories { mavenCentral()}dependencies { compile 'org.scala-lang:scala-library:2.9.1'} 如果 Scala 仅用于测试代码, scala-library 依赖应被添加到 testCompile 配置中:为 test 代码定义一个Scala 依赖build.gradle dependencies { testCompile "org.scala-lang:scala-library:2.9.2"} scalaClasspath 的自动配置ScalaCompile 和 ScalaDoc tasks 会以两种方式使用 Scala: 在它们的 classpath 以及scalaClasspath 上。前者用于在源代码中查找类的引用,通常会包含 scala-library 和其他库。后者用来分别加载和执行 Scala 编译器和 Scala 工具,并且应该只包含 scala-library及其依赖项。除非显式配置了一个 task 的 scalaClasspath ,否则 Scala(基础)插件会尝试推断该 task 的 classpath。以如下方式进行:如果在 classpath 中找到 scala-library Jar ,并且该项目已经在至少一个仓库中声明了它,那么相应的 scala-compiler 的仓库依赖将添加到 scalaClasspath中。其他情况,该 task 将执行失败,并提示无法推断 scalaClasspath。 公约属性Scala 插件没有向 project 添加任何的公约属性。source set 属性Scala 的插件向 project 的每一个 source set 添加了下列的公约属性。你可以在你的构建脚本中,把这些属性当成是 source set 对象中的属性一样使用。表 25.4. Scala 插件 - source set 属性属性名称类型默认值描述scalaSourceDirectorySet?(read-only)非空该source set 中的 Scala 源文件。包含在 Scala 源目录中找到的所有的.java文件,并排除所有其他类型的文件。scala.srcDirsSet<File>.name/scala]源目录包含该 source set 中的 Scala 源文件。此外可能还包含用于联合编译的 Java 源文件。allScalaFileTree?(read-only)非空该source set 中的所有 Scala 源文件。包含在 Scala 源目录中找到的所有的.scala文件。这些属性由一个 ScalaSourceSet 的约定对象提供。Scala 的插件还修改了一些 source set 的属性:表 25.5. Scala 插件 - source set 属性属性名称修改的内容allJava添加在 Scala 源目录中找到的所有.java文件。allSource添加在 Scala 的源目录中找到的所有源文件。Fast Scala CompilerScala 插件包含了对 fsc,即 Fast Scala Compiler 的支持。fsc 运行在一个单独的进程中,并且可以显著地提高编译速度。启用 Fast Scala Compilerbuild.gradle compileScala scalaCompileOptions.useCompileDaemon = true // optionally specify host and port of the daemon: scalaCompileOptions.daemonServer = "localhost:4243"} 注意,每当 fsc 的编译类路径的内容发生变化时,它都需要重新启动。(它本身不会去检测编译类路径的更改。)这使得它不太适合于多项目的构建。在外部进程中编译当 scalaCompileOptions.fork 设置为 true 时,编译会在外部进程中进行。fork 的详细情况依赖于所使用的编译器。基于 Ant 的编译器 (scalaCompileOptions.useAnt = true) 将为每个 ScalaCompile 任务 fork 一个新进程,而默认情况下它不进行 fork。基于 Zinc 的编译器 (scalaCompileOptions.useAnt = false) 将利用 Gradle 编译器守护进程,且默认情

[1] [2]  下一页


Gradle Scala 插件