看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!
gradle 是一个综合性的多语种构建工具,已经发布了 4.7 版,新功能包括:
- 增量式注解处理
- Java 10 运行时支持
- 分组的非交互式控制台日志
- 优先重新运行失败的测试以获得更快的反馈
- Kotlin DSL 0.16 ,新的预编译脚本插件
下面简要介绍其中的一些功能。
增量式注解处理
Gradle 的增量 Java 编译器(自 2.1 版开始提供)已得到增强,包括对注解的增量处理。 Gradle 支持两种用于增量式编译的注解处理器:一种是隔离,单独处理注解元素,一种是聚合,将多个注解元素聚合到一个或多个输出文件中。其他类型的注解处理器会对注解进行全面的重新编译。
下面的例子演示了如何将一个 Dagger 注解处理器添加到 build.gradle 文件中:
dependencies { // Dagger 只能在注解类路径中找到 annotationProcessor 'com.google.dagger:dagger-compiler:2.8' // Dagger 类库需要存在类路径中 implementation 'com.google.dagger:dagger:2.8' }
非交互式控制台日志
Gradle 支持两种控制台模式:普通模式(plain),用在 IDE 或 CI 构建代理中,还有一种是丰富模式(rich),用在命令行中。在新版本之前,普通模式的输出(如下面使用 IntelliJ IDEA 中的 Gradle 4.4)与丰富模式的输出不一样。
在新版本中,普通模式和丰富模式都会产生相同的输出。如下面的命令行示例所示,由Gradle 任务生成的日志信息现在被分组在一起,头部信息前面增加了> Task。
Kotlin DSL
Gradle 现在支持的 Gradle Kotlin DSL版本0.16.3 ,带有预编译 Kotlin DSL 脚本,支持 Kotlin 1.2.31 和 Java 10,可以与 IntelliJ IDEA 更好的集成,并提供更一致的 API。
发行说明中写道:
预编译脚本插件是编译过的 Kotlin 脚本,这些脚本是常规 Kotlin 源代码集的一部分。插件的标识符将自动从文件名和可选的包名声明中获得。
可以在 build.gradle 文件中启用预编译脚本:
plugins { 'java-gradle-plugin' 'kotlin-dsl' } apply<org.gradle.kotlin.dsl.plugins.precompiled.precompiledscriptplugins>() </org.gradle.kotlin.dsl.plugins.precompiled.precompiledscriptplugins>
一旦启用,在 src/main/kotlin 中定义的脚本会自动变成普通的 Gradle 插件。在下面的示例中,一个叫作 my-plugin.gradle.kts 的脚本将成为 my-plugin,然后在 build.gradle 文件中使用。
Gradle 支持的语言包括:
- Java
- C++
- Python({py} gradle)
- JavaScript
- Clojure
- Scala
相关资源
- Gradle 的 YouTube 频道
- Incremental Compilation, the Java Library Plugin, and Other Performance Features in Gradle 3.4 by Cédric Champeau (February 25, 2017)
- Gradle Kotlin DSL Tutorial by Nick Apperley (January 2, 2018)
查看英文原文: Gradle Releases Version 4.7 with Support for Java 10
评论