内容简介:Gradle 7.1 现已发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不...
Gradle 7.1 现已发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。
此版本改进了增量 Java 编译,并使 Kotlin DSL 中配置 Groovy、Scala 和 Antlr sourcesets 变得更加容易。此外还有一些新的弃用和小的改进,使 Gradle 更容易使用。
改进的 Java 增量编译
Gradle 有一个默认启用的 Java 增量编译器,它通过只编译需要编译的 Java 源文件来加快增量构建。Java 增量编译器在此版本中获得了重大改进。
增量编译分析现在存储在构建缓存中
在以前的 Gradle 版本中,增量编译分析仅存储在本地。这意味着当编译任务的输出从构建缓存中获取时,后续构建无法进行增量编译,并且总是需要完全重新编译。
在 Gradle 7.1 中,增量分析的结果现在存储在构建缓存中,从构建缓存中获取后的第一次编译将是增量的。
增量编译分析更快,使用更少的内存和磁盘空间
增量编译分析需要 Gradle 从 class files 中提取符号并分析依赖关系的传递图以确定特定符号的 consumers。这会消耗大量内存和时间。
Gradle 7.1 显着降低了增量编译分析的成本,以及分析的规模。此更改的影响因项目而异,但可能非常明显。官方表示,在 Gradle 项目本身,其能够将增量编译速度提高两倍。
对常量的更改不再触发全面的重新编译
由于 Java 编译器的工作方式,以前的 Gradle 版本在上游依赖项中的任何常量发生变化时,就会被迫执行全面的重新编译。
Gradle 7.1 引入了一个编译器插件,该插件执行常量使用跟踪,并且仅在常量更改时重新编译常量的 consumers。这可以加速使用大量常量的项目的增量构建,这对于从模板引擎生成的代码很常见。
在 Kotlin DSL 中更容易配置 source set
在使用 Kotlin DSL 时,为 Java 以外的语言配置 source locations 时需要一个特殊的构造。 例如,以下是配置的groovy
sources 方式:
sourceSets {
main {
withConvention(GroovySourceSet::class) {
groovy {
setSrcDirs(listOf("src/groovy"))
}
}
}
}
Gradle 7.1 在以下插件中定义了对每种语言的 source sets 的扩展:
groovy
antlr
scala
这意味着 Kotlin DSL 将可以访问自动生成的访问器,withConvention
不再是必要的:
sourceSets {
main {
groovy {
setSrcDirs(listOf("src/groovy"))
}
}
}
为编译任务构建缓存友好的命令行参数
现在可以使用 jvmArgumentProviders 为 JavaCompile、GroovyCompile 和 ScalaCompile 任务的编译器守护程序提供命令行参数。
通过jvmArgumentProviders
配置的 CommandLineArgumentProvider 对象将被询问输入和/或输出注释,Gradle 会将这些添加到相应的任务中。
def javaAgent = objects.newInstance(JavaAgent)
javaAgent.jarFile = file('some/path/to/agent.jar')
// This can be done with Groovy, Java or Scala compilation
tasks.withType(GroovyCompile).configureEach {
groovyOptions.forkOptions.jvmArgumentProviders.add(javaAgent)
}
abstract class JavaAgent implements CommandLineArgumentProvider {
@Classpath
abstract RegularFileProperty getJarFile()
@Override
List<String> asArguments() {
def jarFilePath = jarFile.get().asFile.absolutePath
return ["-javaagent:${jarFilePath}".toString()]
}
}
JaCoCo 插件支持 Java 15/16
JaCoCo 插件已升级到最新的 JaCoCo 0.8.7 版本,其中包括对 Java 15 和 16 的支持以及对 Java 17 的实验性支持。
更多详情可查看更新说明:https://docs.gradle.org/7.1/release-notes.html
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- NPM包(模块)发布、更新、撤销发布
- 有赞灰度发布与蓝绿发布实践
- 【重磅发布】Linkis 0.10.0 版本发布
- BeetlSQL 3.0.9 发布,Idea 插件发布
- 贝密游戏 0.7.0 发布,发布斗地主
- 【重磅发布】DataSphere Studio 0.9.0 版本发布
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Swift编程权威指南(第2版)
[美] Matthew Mathias、[美] John Gallagher / 陈晓亮 / 人民邮电出版社 / 2017-6 / 89.00元
Big Nerd Ranch是美国一家专业的移动开发技术培训机构,本书是其培训教材。书中系统讲解了在iOS和macOS平台上,使用苹果的Swift语言开发iPhone、iPad和Mac应用的基本概念和编程技巧。主要围绕使用Swift语言进行iOS和macOS开发,结合大量代码示例,教会读者利用高级iOS和macOS特性开发真实的应用。一起来看看 《Swift编程权威指南(第2版)》 这本书的介绍吧!