gradle-6.8-all 快速下载

Gradle-6.8 发布

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

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

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

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

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

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

升级说明

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

./gradlew wrapper --gradle-version=6.8

参见Gradle 6.x升级指南了解升级到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版本。

已修复问题

80个问题已在Gradle 6.8中修复。

[#17277] -使“检查样式”任务与配置缓存兼容
[#15312] -组件元数据规则的中央声明违反了一些规则
[#15297] -grad le项目模型包含不正确的已包含版本的任务路径
[#15267] -带有“- release 7”的JDK 9给出“JavaFileManager不是标准的JavaFileManager”
[#15230] -将嵌入式Kotlin更新到1.4.20
[#15116] -支持锁定设置配置
[#15102] -使带有- task '参数的 help '任务与包含的版本一起工作
[#15098] -更新用户指南中包含的版本中的任务执行
[#15094] -如果定义了工具链语言版本并检测到JRE,则构建失败
[#15068] -生成无法使用按需配置和包含的生成获取状态锁
[#15066] -重新启用工具链样本/片段测试
[#15017] - testCompileClasspath应包含compileOnlyApi
[#15008] -不要规范化变异信息的路径
[#15005] -任务排除应该与包含的构建一起工作
[#15003] -确保在包含的构建中运行任务时构建扫描的一致性
[#15002] -使“任务”任务与包含的构建一起工作
[#14960] -不遵守超时中断的任务很难诊断
[#14932] - Eclipse类路径应该正确地处理测试夹具依赖关系
[#14906] -升级checkstyle以使文本块(JEP-378)支持可用。
[#14902] -任务“PublishToMavenRepository”:属性“credentials”无法序列化
[#14884] -由于正常的分级缓存清理,元数据文件的相关性验证似乎失败
[#14823] -在Windows上使用自动下载的Java 8工具链时不时会失败
[#14804] -允许用户显示所有可用的工具链
[#14802] -添加对供应商/实现工具链选择的支持
[#14801] -使Groovy插件能够利用工具链
[#14798] -在供应工具链时提供更好的反馈
[#14717] -扩展结构化构建的文档
[#14660] -任务执行失败…> kot Lin . JVM . internal . property reference 1 impl . < init >(Ljava/lang/Class;ljava/lang/String;ljava/lang/String;一)五
[#14634] - GradleConnector.disconnect冻结
[#14554] -测试套件成功标准的意外变化(可能是一个特性)
[#14549] - Java工具链下载应该在控制台上显示更多信息,如Java版本
[#14526] -文档/ IDE中的目录不正确
[#14513] -配置缓存-序列化基于文件的依赖关系可能会失败
[#14465] -settings.gradle中没有提供程序
[#14130] - buildSrc代码检测中断代码签名
[#14117] -添加支持以通过TAPI运行包含的构建任务
[#14017] -通过规则升级依赖项的版本会破坏其变体感知解析中的“available-at”
[#13970] -考虑工具链进行最新检查
[#13969] -考虑将javax.inject.Inject添加到默认导入中
[#13503] -配置缓存应该支持复合版本
[#13478] -使“codenarc”插件支持配置缓存
[#13477] -使“jacoco”插件支持配置缓存
[#13476] -使“pmd”插件支持配置缓存
[#13475] -使“checkstyle”插件支持配置缓存
[#13326] -在buildSrc中使用kotlin-dsl插件时出现弃用警告
[#13303] -在使用JUnit平台时,展开的Spock特征方法不能通过包含模式执行
[#13115] -重复测试时,测试结果XML不能很好地与某些工具一起工作
[#12713] -工件文件已从本地缓存中删除,因此无法执行验证
[#12660] -将嵌入式Kotlin升级到1.4
[#12221] -GCS Maven仓库的依赖项刷新需要很长时间
[#11946] -添加启用文件系统监视的性能回归测试
[#11838] -收集VFS性能的统计数据
[#11627] -改进对TAPI调用的处理
[#11048] -按需配置应该配置所有父项目
[#9385] -xmlprovideimpl # removeEmptyTextNodes有缺陷
[#9034] -使用快照代替指纹进行工作输出
[#8315] -改进Gradle元数据中available-at的实现
[#6229] -包含模块的包含版本的依赖循环不正确
[#9224] -kot Lin DSL脚本的编译避免
[#2533] -允许从复合构建命令行直接执行包含的构建中的任务
[#2463] -允许忽略任务输入中的空目录
[#2293] - Gradle无法导入Ant build.xml项目,构建失败,出现IndexOutOfBoundsException
[#15604] -将错误的文件作为输入传递给6.8中的工件转换
[#15588] -本地一致性解析:在进行部分解析时不进行解析
[#15500] - Gradle 6.8破解protobuf插件
[#15494] -为中央存储库声明DSL添加缺少的getters
[#15463] -找不到配置缓存文件夹
[#15449] -Android lint任务和Gradle 6.8-RC1出现死锁情况
[#15426] -工件转换的空目录规范化不适用于配置缓存
[#15402] - TestLauncher应支持启动引用包含的构建的TestOperationDescriptors
[#15399] -修复任务上工具链相关属性的输入注释
[#15397] - Android构建失败,未解决Gradle 6.8-rc-1的引用问题
[#15395] -文档中插件标记的现有样本已损坏
[#15392] - Java可执行文件需要文件扩展名
[#15391] - kotlin-dsl 如果提前实现了kotlin编译任务,则会跳过kotlin编译器警告重写器
[#15364] -" org . grad le . JVM . tool chain . internal . defaulttoolchainjavalauncher无法序列化"错误
[#15351] -配置缓存-缓存和非缓存运行中的任务输入不同
[#15339] - Spring依赖项-管理-6 . 8 . 0-rc1上的插件失败
[#15325] -自动下载的工具链大大降低了构建速度(可能只在Linux上,否则只在CI上)
[#14799] -提高探测工具链的性能

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值