gradle-6.8.3-all 百度网盘下载

Gradle-6.8.3 发布

Gradle团队很兴奋地宣布Gradle 6.8.3。

此版本显著改进了Kotlin DSL构建脚本编译的性能,增加了几个对Java工具链支持的改进,包括供应商选择,并使其易于直接从命令行执行复合构建中的任何任务。此版本还引入了新的一致性解决方案的依赖关系管理API.

这实验配置缓存增加了对Gradle附带的复合版本和更多核心插件的支持。

其他几个丰富在此版本中添加了。

我们预计不会有很多版本受到影响,但是这个版本禁用过时的TLS v1.0版和1.1版协议提高从外部存储库解析依赖项的构建的安全性。

下载连接:点击进入快速下载

升级说明

通过更新您的包装器,切换您的构建以使用Gradle 6.8.3:

./gradlew wrapper --gradle-version=6.8.3

参见Gradle 6.x升级指南了解升级到Gradle 6.8.3时的弃用、重大变更和其他注意事项。

注意:Gradle 6.8已经三补丁版本,修复了原始版本的几个问题。我们建议始终使用最新的补丁版本。

关于Java、Groovy、Kotlin和Android兼容性,请参见完全兼容性说明.

性能改进

Kotlin DSL脚本编译改进

此版本编译了格雷尔·科特林DSL脚本(*.gradle.kts)更快,减少了消耗的内存量,并引入了编译避免,可以完全消除重新编译Kotlin构建脚本的需要。

在一个包含100个子项目的示例构建中,累积的脚本编译时间从大约50秒一直到大约21秒冷缓存和冷守护进程。垃圾收集时间从2.6秒一直到1.3秒。这种改进也减少了内存压力。最重要的是,非ABI的变化可以现在完全消除构建脚本重新编译,节省了那21秒。
在这里插入图片描述
到目前为止,任何构建逻辑的变化建筑Src需要重新编译所有的构建脚本。此版本为引入了编译避免格雷尔·科特林DSL剧本。

避免编译将导致Gradle仅在共享构建逻辑的更改影响构建脚本类路径的ABI(应用程序二进制接口)时才重新编译构建脚本。对构建逻辑的私有实现细节的更改,如私有方法或类、非私有方法或类的主体,以及对预编译脚本插件,将不再触发项目生成脚本的重新编译。

避免编译也适用于构建脚本的类路径上的任何JAR中的更改。这包括由包含的构建中定义的插件添加的jar和通过buildscript {}阻止。

虽然对构建的影响可能有所不同,但在编辑Kotlin DSL构建逻辑时,大多数构建的反馈循环可能会明显缩短。

注意:科特林的公共内嵌函数不支持避免编译。如果这样的函数出现在buildscript的类路径上的JAR的公共API中,那么对该JAR中的类的更改将导致Gradle退回到它的旧行为。例如,如果buildSrc包含一个具有公共内联函数的类,那么对buildSrc将导致所有构建脚本被重新编译。

使用运行时类路径的任务的缓存命中率更高

为最新支票和构建缓存,Gradle需要确定两个任务输入属性是否具有相同的值。为了做到这一点,格雷尔首先正常化两个输入,然后比较结果。

运行时类路径分析现在可以智能地检查所有属性文件,忽略注释、空白和属性顺序的差异。此外,您可以有选择地忽略不影响运行时类路径的属性。

normalization {
    properties('**/build-info.properties') {
        ignoreProperty('timestamp')
    }
}

当类路径上的属性文件重新生成或仅在不重要的值上有所不同时,这提高了更新和构建缓存命中的可能性。

看见用户手册了解更多信息。

存在空目录时,缓存命中率会更高

为最新支票和构建缓存,Gradle需要确定两个目录结构是否包含相同的内容。当一个目录包含一个空目录时,它被认为与不存在空目录的相同目录具有不同的内容。

这可能并不总是令人满意的。在许多情况下,只有目录结构中的文件可能是重要的,空目录对任务的输出没有影响。在这种情况下,因为存在空目录而重新执行任务是不必要的,因为它只会产生相同的输出。

引入了新的注释来解决这种情况。输入注释有@输入文件或者@输入目录可以附加注释为@ IgnoreEmptyDirectories指定在生成缓存和最新检查期间不应考虑目录。对于以这种方式标注的输入,只有对文件(包括文件路径)的更改才会被视为输入值的差异。

class MyTask extends DefaultTask {
    @InputFiles
    @PathSensitive(@PathSensitivity.RELATIVE)
    @IgnoreEmptyDirectories
    FileCollection inputFiles;
}

类似地,也有相应的运行时API等价物:

tasks.register("myTask") {
    ext.inputFiles = files()
    inputs.files(inputFiles)
          .withPropertyName('inputFiles')
          .withPathSensitivity(PathSensitivity.RELATIVE)
          .ignoreEmptyDirectories()
}

源任务, JavaCompile, GroovyCompile,以及AntlrTask已全部更新,现在在进行最新检查和构建缓存键计算时会忽略空目录。

看见用户手册了解更多信息。

配置缓存改进

这配置缓存通过缓存配置阶段的结果来提高构建性能。使用配置缓存,当没有任何影响构建配置的内容发生变化时,Gradle可以完全跳过配置阶段。

阅读…的文章此功能及其影响在格雷尔的博客上。您还可以在中跟踪配置缓存支持的进度核心插件和社区插件.

支持复合构建

从这个版本开始,复合构件配置缓存完全支持。

更多支持的核心插件

在此版本中,所有核心代码分析插件都完全支持配置缓存:

  • checkstyle
  • pmd
  • codenarc
  • jacoco

参见支持的核心插件矩阵在用户手册中。

安全改进

默认情况下,不再启用过期的TLS版本
此版本的Gradle从默认的允许协议列表中删除了TLS协议v1.0和v1.1。在解决依赖关系时,Gradle将不再默认回退到TLS v1.0或v1.1。默认情况下,只允许TLS v1.2或TLS v1.3。

通过手动指定系统属性,可以重新启用这些TLS版本https.protocols用逗号分隔您的版本所需的协议列表。

绝大多数构建应该不需要以任何方式进行更改。Maven Central和JCenter/Bintray2018年停止支持TLS v1.0和TLS v1.1。从Java 7开始,Java就有了TLS v1.2。在Gradle中禁用这些协议可以保护构建免受降级攻击。

根据您使用的Java版本,Gradle在与远程存储库通信时会协商TLS v1.2或TLS v1.3。

注意:JDK 11和JDK 12的早期版本包含中的竞态条件错误TLSv1.3处理逻辑这导致了异常javax.net.ssl.SSLException: No PSK available. Unable to resume。如果您遇到此问题,我们建议您更新到最新的次要JDK版本。

已修复问题

1个问题已在Gradle 6.8.3中修复。

[#16144] -当使用不同的规范化配置对jar进行哈希处理时,构建缓存未命中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值