Gradle 7.3.3 发布

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

此次发布引入声明性测试套件API对于JVM项目,添加支持用Java 17构建项目,并更新Scala插件以支持Scala 3.

此外,还会对构建进行更改更可靠,提供下载依赖项时ide的附加细节,提高自定义插件中未跟踪的文件,几个错误修复还有更多。

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

已修复问题

v7.3.3 版本中修复的问题:

  • Gradle版本中log4j漏洞的缓解
  • 用$ character重命名类名时,增量java编译失败

v7.3.2 版本中修复的问题:

  • 考虑恢复有关测试配置的重大更改
  • 修复Micronaut发现的多个注释处理问题

v7.3.1 版本中修复的问题:

  • 考虑恢复有关测试配置的重大更改

v7.3 版本中修复的问题:

  • [#18660] -将未跟踪的注释移动到任务级别
  • [#18635] -改进- project-cache-dir与- watch-fs一起使用时的错误消息
  • [#18632] -测试套件无法添加版本目录项
  • [#18626] - 7.3-rc-1 - project-cache-dir与org.gradle.vfs.watch=true不兼容
  • [#18622] -在KMP找不到名为“测试”的源集
  • [#18606] - 7.3-rc-1:酝酿测试套件变更会破坏现有的构建
  • [#18598] -修复小的JvmTestSuitePlugin文档格式问题
  • [#9095] -完全禁用任务的缓存和最新检查
  • [#18840] - [Regression]增量注释处理器因“尝试为类型重新创建文件”而失败
  • [#19482] -buildprogresslisteneradapter . descriptor cache中的高内存消耗
  • [#18559] -Scala 3 Intellij Idea集成中的回归
  • [#18506] -使用Scala 3支持Scaladoc
  • [#18465] - JDK17 + JUnit中断测试扫描
  • [#18460] - Gradle 7.3快照:依赖项任务失败,显示“构建输出清理注册表已完成-无法注册更多输出”
  • [#18454] -记录发布依赖于强制平台的库的危险
  • [#18412] -配置缓存已损坏:NonSerializableMemoizingSupplier,DefaultJvmInstallationMetadata,JavaToolchain
  • [#18388] -实现JvmTestSuite#useTestNG
  • [#18387] -为JvmTestSuite#useSpock和#useKotlinTest添加javadoc
  • [#18381] -调查测试套件类路径的可能损坏
  • [#18324] - gradle依赖于包含CVE漏洞的不安全的第三方JAR包
  • [#18294] - VFS无法添加手表,错误= 2
  • [#18269] -使DisableCachingByDefault默认为非孵化
  • [#18243] -更新现有的测试覆盖以使用新的测试套件API
  • [#18241] -向测试套件API的用户手册中添加文档
  • [#18239] -支持TestNG和Spock作为测试框架选项
  • [#18238] -更新构建初始化以提供基于孵化API的最佳实践的选择加入
  • [#18229] -允许平台、强制平台、测试装置和变量的版本目录子访问器
  • [#18228] -忽略Java sourcepath编译选项上的空目录
  • [#18211] - Scala插件没有从Java target compatibility/tool chain中选择jvm-target
  • [#18198] -配置缓存:为java-gradle-plugin项目重用缓存时出现ClassNotFoundException
  • [#18167] -在版本目录库中,别名“jme3-plugins”不是有效的别名,在7.1.1中有效,在7.2中无效
  • [#18161] -为未跟踪的属性添加更多测试
  • [#18160] -记录未跟踪的任务属性
  • [#18159] -允许复制任务将其输出标记为未跟踪
  • [#18142] -版本目录:插件不支持子访问器和别名重载。
  • [#18115] -无法将使用Gradle 7.3快照的项目导入IntelliJ
  • [#18079] -依赖关系解析失败,出现“损坏的序列化解析结果”
  • [#18068] -允许声明未跟踪的任务属性
  • [#18064] -当java-gradle-plugin具有项目依赖性时,配置缓存出现以下问题:pluginUnderTestMetadata
  • [#18002] -请记录Kotlin语言与Gradle构建工具版本的兼容性。
  • [#17986] -版本目录应该允许用户使用插件后缀配置库
  • [#17979] -文件观看不检测更改的文件- Docker运行Windows 2019 server
  • [#17974] -文件:增加inotify限制的错误说明
  • [#17964] -排除将无法排除重写的依赖项
  • [#17882] -使MinimalExternalModuleDependency # toString起作用
  • [#17855] -功能解析并不总是按预期应用
  • [#17849] -为enforced Platform(Provider < MinimalExternalModuleDependency >)提供覆盖,类似于platform
  • [#17829] -多项目构建中不一致的任务选择器行为
  • [#17812] - Gradle有时会在任务执行开始时死锁
  • [#17803] - Gradle init即使被取消也是破坏性的
  • [#17785] -确保“Java tool chain”API与配置缓存兼容
  • [#17746] -多级增量注释处理器的性能回归
  • [#17563] -动态版本TTL过期后,无法加载配置缓存。
  • [#17415] -使用war插件时,providedRuntime被添加到compileClasspath
  • [#17039] -升级到Gradle 7.0后出现弃用警告
  • [#16857] -支持JDK 17
  • [#16527] -支持Scala3
  • [#15664] -插件在插件块中的应用顺序应该是确定的
  • [#13706] -配置缓存应该捕获输入规范化
  • [#12232] -升级到6.0.1或6.1.1后,不断创建崩溃守护程序
  • [#11587] - Gradle不应将不存在的路径添加到类路径中
  • [#9903] -正确的增量Java/Groovy联合编译
  • [#7508] -AbstractStyledTextOutput中的ConcurrentModificationException
  • [#8749] -对于idea插件,``添加排除的文件夹不起作用,只有重新分配起作用
  • [#18732] -Scala 3的ScalaDoc中断多模块构建
  • [#18726] -使用gradle-7.3-rc2和java 17构建时出现NullPointerException

升级说明

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

./gradlew wrapper --gradle-version=7.3.3

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

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

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

新功能和可用性改进

支持Java 17

Gradle现在支持在上运行并使用Java 17.

在以前的Gradle版本中,在Java 17上运行Gradle本身会导致错误。JVM项目本来可以用Java 17构建使用工具链.

从Gradle 7.3开始,完全支持运行Gradle本身和用Java 17构建JVM项目。

JVM项目中的声明性测试套件

当…的时候测试Java和JVM项目,您通常需要将测试类组合在一起,将它们组织成可管理的块,以便您可以以不同的频率或者在构建管道中的不同点运行它们。例如,您可能想要定义以下组单元测试, 集成测试,以及功能测试.

以前,正确地对测试进行分组需要对如何在Gradle中修改和连接各种域对象有透彻的了解,比如源集、配置和任务。如果您想要将测试分成不同的组,您需要理解这些独立的部分是如何相互作用的。

在Gradle 7.3中JVM测试套件插件简化了这类测试组的创建。我们将这些群体称为测试套件。请注意,这不要与测试框架套件相混淆,比如JUnit4的套件.

测试套件是一个高级概念,可以在构建脚本中直接和一致地引用。您可以配置测试所使用的依赖项、源代码和测试框架,而不必担心底层细节。

例如,您可以创建一个集成测试,通过将以下代码片段添加到Java项目来测试套件:

testing {suites {// Add a new test suiteintegrationTest(JvmTestSuite) {// Use JUnit Jupiter as a testing frameworkuseJUnitJupiter('5.7.1')// depend on the production code for testsdependencies {implementation project}}}
}// Run integration tests as part of check
tasks.named('check') {dependsOn(testing.suites.integrationTest)
}

这个功能对于所有基于JVM的项目都是自动可用的java插件。内置的test任务已在测试套件上重新实现。查看更多信息用户手册.

这个API是潜伏并且随着更多功能的增加,在未来的版本中可能会有所改变。

Scala 3支持

Scala插件允许用户使用Gradle和Zinc incremental编译器编译他们的Scala代码。

Scala插件现在可以编译Scala 3代码了。所有现有的配置选项应该仍可用于最新的语言版本。

Scala 3的最新版本带来了许多特性,同时保持了与大多数现有Scala 2代码的兼容性。要查看有关语言功能的更多信息,请访问Scala 3新特性概述.

探索新的行为gradle init

当您使用初始化新的Gradle项目时gradle init,Gradle现在会问你是否想在构建中尝试新的但不稳定的特性。这将允许您在新功能变得稳定之前尝试它们。您总是可以通过运行来请求此行为gradle init --incubating生成新项目时。

目前,使用此选项生成的版本只能启用测试套件,但其他新的API或行为可能会随着它们的引入而添加。

版本目录改进

版本目录是一个功能预览这为引用依赖项及其版本提供了一个方便的API。在此版本中,它得到了以下改进。

取消别名的限制

在以前的Gradle版本中,不能用后缀声明别名plugin, version和其他受限制的关键字。随着这一版本的发布,这些限制现已取消。检查证明文件详情请见。

版本目录类型不安全API更改

当使用类型不安全API时,所有接受别名引用现在可以使用与别名定义完全相同的字符串。这意味着您可以声明和引用groovy-json而不是被迫使用groovy.json在类型不安全API中。

请注意,对类型不安全API的访问已经更改,请参见升级指南.

在更多情况下支持一致的版本目录访问器

随着声明别名的可能性越来越多,一些访问器在与插件或依赖声明相关的特定API中不被支持。此版本修复了这些问题,并且可以在更多的上下文中一致地使用访问器。

对于插件,如果你有kotlin.js和kotlin.js.action插件,两者都可以在plugins阻止。

依赖关系声明platform, enforcedPlatform, testFixtures和force支持所有访问器类型。

可靠性改进

更强大的文件系统监控

当运行增量构建时,Gradle需要了解自文件系统上的上一次构建以来发生了什么变化。为此,它依赖于操作系统的文件系统事件只要有可能。

在一些罕见的环境中,这些事件可能是不可靠的,并会导致Gradle忽略一些更改。为了防止这种情况,Gradle现在会在启用基于文件系统事件的优化之前,验证文件系统事件是否及时交付。

允许将单个文件复制到包含不可读文件的目录中。
有时,您希望将文件复制到包含不可读文件的目录中,或者复制到不是由该版本独占的目录中。例如,当您将单个文件部署到应用服务器或安装可执行文件时。

这样做可能会失败或很慢,因为Gradle试图跟踪目标目录中的所有内容。

为了解决这些问题,现在可以使用方法Task.doNotTrackState()在Copy强制Gradle忽略目标目录中的内容的任务。

请参阅用户手册中关于的示例将单个文件部署到应用服务器中和安装可执行文件.

配置缓存中的输入规范化支持

这输入标准化现在被实验者正确地追踪到了配置缓存。当配置缓存启用时,任务最新检查现在会考虑规范化规则,从而加快构建速度。

插件开发改进

使用初始化新的插件项目构建初始化插件也可以受益于这–incubating选择权.

允许插件作者将任务声明为未跟踪

对于最新的检查和构建缓存,Gradle需要跟踪任务输入和输出的状态。Gradle并不总是希望或可能完全跟踪输入和输出文件的状态。

例如:

  • 输入或输出位置包含不可读的文件,如管道,Gradle无法跟踪内容。
  • 输入或输出被远程存储,例如存储在数据库中,并且其状态无法被跟踪。
  • 另一个像Git这样的工具已经负责保持状态,所以Gradle做额外的簿记没有意义。
  • 构建并不独占输出位置,Gradle需要跟踪大量内容的状态。

Gradle 7.3引入了注释@UntrackedTask并且该方法Task.doNotTrackState()声明Gradle不应该跟踪任务的状态。这允许任务实现上述用例。

如果一个任务未被跟踪,那么Gradle在运行该任务时不会做任何优化。例如,这样的任务将总是过时的,并且永远不会来自构建缓存。

@UntrackedTask和Task.doNotTrackState是对Task.outputs.upToDateWhen { false }如果希望任务永远不更新。它的优点是速度更快,因为Task.outputs.upToDateWhen { false }仍然花时间捕捉任务状态。

请参阅用户手册中关于的示例集成一个外部工具,它自己进行最新的检查.

工具提供商的改进

工具API允许应用程序嵌入Gradle。IDEA、Android Studio和Buildship等IDE都使用这个API将Gradle集成到IDE中。

文件下载进度事件

当一个构建下载了许多文件或非常大的文件时,例如在解析依赖关系时,Gradle可能会因为缺少任何日志或控制台输出而看起来没有响应。

此版本添加了新的事件,在下载文件时通知IDE。这允许IDE在Gradle运行和IDE导入/同步期间显示更好的进度信息。

安全改进

两者ant和common-compress捆绑库已更新,可解决报告的漏洞。前往升级指南版本和已解决的漏洞。

提升的功能

升级功能是在Gradle的早期版本中酝酿的功能,但现在受到支持并具有向后兼容性。请参阅“用户手册”一节功能生命周期”了解更多信息。

以下是此Gradle版本中提升的功能。

默认情况下禁用缓存

这@DisableCachingByDefault注释现在是一个稳定的特性。

gradle-7.3.3-all 百度网盘下载相关推荐

  1. Modis数据处理工具:MRT百度网盘下载和手把手图文安装教程

    如下图所示为 MODIS Reprojection Tool(MRT)的软界面,看似简单,却是Modis遥感影像必不可少的处理工具,如投影变换等.本文以图文并茂的形式,详细讲解MRT软件在Window ...

  2. 百度网盘php文件怎么打开,如何通过网页版百度网盘下载大文件

    最近老张需要在百度网盘下载一个较大的文件,结果他要我必须下载客户端才行, 此背景下,在网站找了各种办法,什么模拟手机,F12查看下载链接都不行,最后找到了可行的办法. 步骤如下: 一:如果是别人分享的 ...

  3. 解决百度网盘下载限速 速度慢问题

    有的时候下载一些资料,别人用百度网盘分享给你,用百度网盘下载的时候发现只有几十k的下载速度,我明明是百兆宽带,一看就是被限速了,怎么办?百度了一圈发现哪些方案都太low了,不能解决,又浪费时间,csd ...

  4. 《Android Studio从入门到精通》读后感,电子书PDF百度网盘下载

    严格来说,这本书应该都不算是一本书,因为没有出版信息.但是又有封面,内容也有这么多,又像是一本书.那么暂且就当它是一本书吧. 这本书的内容呢,作者是泛泛而谈,你也只需要泛泛而看就行了.我花了一个下午看 ...

  5. 百度云盘照片导入华为相册里_百度网盘传送列表怎样导入手机相册_手机百度网盘下载到相册...

    camera360云相册怎么导入手机?相机360云相 318x345 - 21KB - JPEG TIM如何将手机照片导入至电脑?腾讯TIM手机电 500x284 - 9KB - JPEG 如何把ip ...

  6. 白度云下载到存储卡的视频看不了_苹果手机从百度网盘下载的视频如何保存到相册,还有不知道的吗?...

    大家好!苹果手机从百度网盘下载视频到本地以后在相册里是不显示的,我们不能从相册直接进行播放等操作,视频编辑软件也检测不到该视频,编辑起来也很不方便,今天就给大家演示一下把视频导入相册的方法步骤,很实用 ...

  7. 猿辅导python资源_2020猿辅导(小猿搜题)高中辅导全资源合集百度网盘下载

    2020猿辅导(小猿搜题)高中辅导资料 百度网盘下载 根据猿题库几千万学生的做题记录,选取高中生最易错.最常错的题型,精选整合, 按照由易到难的原则排序,配以资深教师编写和答案详解.我们希望你在记忆前 ...

  8. 百度网盘下载软件(10+m)

    百度网盘下载器(亲测10+m) 现在讲讲这么用 我们知道百度云管家对于非VIP用户了进行了下载限速,即使你的带宽再高只要没有开通VIP特权,使用百度云管家下载资源都是非常慢的,那等着真是干着急,现在我 ...

  9. 在Linux环境下通过百度网盘下载并安装matlab2017a

    前言 百度网盘下载matlab2017a安装包 方式1:安装百度网盘的python程序bypy 方式2:直接在浏览器下载 安装matlab 备注 参考链接 前言 最近参加一个比赛,需要在官方公布的li ...

  10. Aria2-突破百度网盘下载限速

    真的是神器,感谢网友的贡献与分享,做一个简化版的总结 aria2官网(看看就可以,暂时没什么用):https://aria2.github.io/ macOS mac上配置比较简单 安装chrome插 ...

最新文章

  1. javascript函数式_JavaScript中的函数式编程—结合实际示例(第1部分)
  2. Simulink仿真 第二节 输入输出和子系统
  3. 吐司面包的做法_无糖粗粮吐司面包的做法+配方,超柔超软,一次发酵
  4. python对word提取数据,如何使用Python从doc / docx文件中提取数据
  5. Scala 知识点掌握1
  6. dwr(Direct Web Remoting)的使用
  7. 折腾kali linux2.0
  8. Vidmore Player for Mac(多功能蓝光播放器)
  9. html 狗头小游戏祝大家情人节快乐
  10. 【软件过程改进 学习笔记】过程思维 ( 软件危机 | 软件过程 | 过程改进 | 过程思维 | 过程描述 | ISO 9000 | 6σ | PCM | CMMI )
  11. 新路由3 newifi d2 潘多拉PandoraBox固件,带鸡血驱动
  12. 微信小程序-找地儿住-官方文档
  13. Git Branching基础操作学习笔记
  14. 移动App模块化设计
  15. LLVM WEEKLY系列停止转载
  16. 科学道德与学术诚信 计算机,关于开展2020级研究生科学道德和学术诚信教育工作的通知...
  17. 同质化竞争格局下,SCRM厂商如何差异化突围?
  18. ALSA dmaengine ops
  19. 7 张图带你搞懂二层和三层交换机之间的区别
  20. 【C++】vector模拟实现及其应用

热门文章

  1. 怎么收数?怎么汇总?Excel自动化模板了解一下
  2. Pytorch实现残差神经网络(ResNet)
  3. Kafka卡夫卡详解
  4. ssm基于java的儿童成长记录系统
  5. 家用电脑虚拟机做服务器_旧电脑使用虚拟机,简单几步打造万元群晖NAS
  6. 明明知道,有一份飘泊的爱永远没有归期
  7. 2019年4月3日华为实习生笔试第1题-交替输出字符串
  8. Gestures//手势
  9. A_Pancers团队作业4—基于原型的团队项目需求调研与分析
  10. 无线抄表与服务器,无线抄表是什么--老兵聊电之