Gradle 7.5.1 发布

Gradle 7.5.1 现已发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。

这是 Gradle 7.5 系列的第一个补丁版本。

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

Gradle 7.5.1中修复了8个问题。

官方建议用户进行升级。它修复了以下问题

[#21400] - Scala编译失败,出现“不支持rt.jar(类SBT . internal . Inc . dummyvirtualfile)”
[#21399] - Gradle 7.5 Javadoc插件因多模块聚合而损坏(由于设置-源-路径)
[#21374] -使用ValueSourceParameters将任务属性集存储到ValueSource提供程序。无参数类型进入配置缓存失败
[#21365] -更新升级指南以警告Checkstyle工作目录中的更改
[#21353] - CheckStyle失败,因为它没有配置javaLauncher
[#21346] -当上游任务失败时,终结器的终结器不再执行
[#21301] -将某些类型的配置属性传递给Checkstyle时出现NullPointerException
[#21269] -jav exversion。VERSION_18依然标着@孵化中

此版本包括使用 Java 18 构建代码和运行 Gradle、使用 Groovy 4 构建代码、响应速度更快的持续构建、改进的依赖解析诊断以及配置缓存改进以提高性能、为 JVM 提供 Adoptium 工具链等等。

升级说明

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

./gradlew wrapper --gradle-version=7.5.1

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

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

新功能和可用性改进

支持Java 18

Gradle现在支持在上运行并使用Java 18。

对Groovy 4的支持

Gradle现在支持使用Groovy 4.0构建软件。注意,Groovy DSL构建脚本仍然使用Groovy 3。

Scala Zinc已更新

默认的Scala Zinc版本是更新至1.6.1。

Zinc是Scala增量编译器,它允许Gradle总是编译当前文件更改所需的最小文件集。它考虑了哪些方法正在被使用,哪些方法已经被改变,这意味着它比文件间的依赖关系更细粒度。

使用Java 9+的Windows和macOS上的持续构建响应速度更快

连续构建当输入发生变化时,使用相同的请求任务自动重新执行构建。这允许在开发过程中持续的反馈。

由于JDK的内部变化,持续构建在Java 9和更高版本的Windows和macOS上不能很好地工作。检测到更改并触发构建可能需要10秒钟。

现在,Gradle几乎可以立即在Windows和macOS上对所有Java版本进行修改,使得Continuous Build在所有主流操作系统上快速响应。这是因为Gradle现在使用它自己的健壮的本地实现的文件系统监视系统,而不是依赖JDK中的通用API。

改进了依赖关系解决方案的诊断报告

传出变量

这outgoingVariants报告现在提供了更多信息,有助于进一步了解变体感知依赖性解析结果。

当生产者依赖于消费者时,此报告在确定为什么另一个消费者项目选择了该生产者项目的特定变体时非常有用。从生产者项目中运行报告,以列出由它构建的每个变体(包括仅对其他本地项目可见的次级变体)。输出包含生产者的每个变体上存在的能力和属性,以及下面详细描述的其他信息。此输出可以与新的resolvableConfigurations报告在消费者中运行。

  1. 现在会打印二级变型(如果有)的描述。
  2. 配置使用@Incubating属性用(i)。
  3. 报告底部的图例阐明了次级变体的用法。
  • 输出的格式(和丰富控制台的颜色)现在更加清晰,与其他报告更加一致。
  • 功能、属性和工件列表按字母顺序排序。
  • (未显示)分类器现在打印在工件(如果存在)旁边。
  • (未显示)使用时的新消息–all和–variant更好地描述结果(或缺乏结果)的选项
    参见OutgoingVariantsReportTaskDSL参考以了解更多详细信息。
二级变型的描述

定义时次级变体,这是仅适用于其他本地Gradle项目的变体,有一个新的配置变体可用于为变体提供注释或描述的方法。这些描述将由打印outgoingVariants为Java插件产生的现有二级变体添加了报告和默认值。

可解析的配置

有一个新的resolvableConfigurations可用的报告,它将显示项目中可以解析的所有配置的信息。

这份报告补充了outgoingVariants报告并且意味着从依赖关系的消费者侧运行,以确定当消费者依赖生产者时,消费者项目为什么选择生产者项目的特定变体。它包括以下信息:

  • 描述、属性和(直接)扩展配置
  • A --recursive可以设置选项标志,以显示过渡扩展的所有配置
  • 列出了在解析过程中受兼容性或歧义规则影响的属性
  • A --configuration选项可以将此报告限制为单一配置
  • A --all选项标志可以被设置为包括既可解析又可消费的遗留配置;默认情况下,这些将被隐藏

参见ResolvableConfigurationsReportTaskDSL参考以了解更多详细信息。

依赖性洞察

这dependencyInsight报告提供了有关特定依赖关系的信息,包括选择了什么变体,以及解析过程中使用的属性。

该报告现在使用一个表格来显示变量,这使得更容易辨别属性值的来源,并查看为什么选择了特定的变量:

  1. 变体名称列在顶部,在单词“变体”之后
  2. 变量输出现在是表格格式。
  3. 仅出现在变体元数据中的属性仅包含“已提供”列中的文本
  4. 变体的元数据中存在的属性和配置请求的属性在两列中都包含文本
  5. 仅由配置请求的属性仅包含“请求”列中的文本

如(3)和(5)中所示,如果项目不在一列中,则它们会显示为橙色。该表首先按组(3)、(4)和(5)排序;然后在每个组内按字母顺序排列。

依赖性解析结果可以用作任务输入

任务可能需要访问相关性解析结果。例如,像这样的内置任务dependencies和dependencyInsight这样做是为了提供关于已解析工件和依赖图的报告。其他任务可能会根据依赖项解析结果生成文件输出。以前,只能通过在任务操作中执行依赖关系解析来实现。然而,这导致了次优的性能。

从Gradle 7.5开始,现在可以将依赖关系解析结果声明为任务输入。

这允许编写消耗依赖性解析结果的任务。声明这样的输入,而不是在任务动作中进行未声明的依赖关系解析,允许Gradle优化构建增量。此外,完全支持这些新类型的任务输入配置缓存。

您可以在了解更多信息创作任务用户手册章节和专用样品。

配置缓存改进

这配置缓存通过缓存配置阶段的结果并在后续构建中重用它来缩短构建时间。

在配置时运行外部流程

以前,外部流程从exec或者javaexecAPI被配置缓存忽略,如果外部进程的输出影响配置,这可能是一个潜在的正确性问题。

A 新的基于提供者的API现在可以以配置缓存兼容的方式获得外部进程的输出。这exec和javaexecAPI现在是不准如果启用了配置缓存以防止潜在问题。

如果需要与外部流程进行更复杂的交互,那么可以定制ValueSource可以使用实现。被注射的ExecOperations应该使用服务来运行外部流程。

配置时读取的文件成为生成配置输入

配置时读取的文件FileInputStream或者一些Kotlin APIs现在自动成为构建配置输入。如果这些文件的内容在两次生成之间发生变化,配置缓存将失效。

以前,文件读取被忽略,如果文件内容影响配置,这可能是一个潜在的正确性问题。

无需不必要地使配置缓存失效即可访问环境的新方法

由于自动构建配置输入检测是在Gradle 7.4中引入的,一些读取环境变量或系统属性子集的常见模式会导致配置缓存过度失效,从而导致次优性能。例如,遍历所有环境变量以查找名称以某个前缀开头的变量会导致所有可用的变量,甚至是不相关的变量,成为配置输入。

现在有两种新的选择可以缓解这种情况。对于更简单的用例,可以访问基于提供者的API系统属性或者环境变量名称以某个前缀开头。高级处理,如用正则表达式过滤姓名,可以在自定义ValueSource实施。读取文件、环境变量或系统属性不再将生成配置输入添加到ValueSource。的值ValueSource每次运行构建时都会重新计算,只有当该值发生更改时,配置缓存项才会失效。

新的兼容插件和任务

这kotlin-dsl插件现在与配置缓存兼容。

这dependencyInsight, outgoingVariants和resolvableConfigurations任务现在与配置缓存兼容。

新的STABLE_CONFIGURATION_CACHE特征标志

配置缓存引入了许多关于构建逻辑的需求。许多问题已经在HTML报告。目前,对于复杂的构建来说,调整构建逻辑以与配置缓存完全兼容可能是一项巨大的工作。

此版本引入了STABLE_CONFIGURATION_CACHE允许逐步推出最具潜在破坏性需求的标志。该标志目前支持验证,如检测未声明的共享构建服务使用和配置时使用的外部流程。

建议尽快启用此标志,以便为移除标志做好准备,并默认启用链接的功能。

了解有关此功能标志的功能的更多信息用户手册。

JVM工具链的改进

Java工具链提供一种简单的方法来声明应该使用哪个Java版本来构建您的项目。默认情况下,Gradle会检测已安装的JDK或者自动下载新的工具链版本。

Java工具链可以通过在Adoptium和AdoptOpenJDK之间自动选择来下载任何JDK
Gradle现在在下载JDK时首先检查Adoptium API,而不是只使用遗留的AdoptOpenJDK API。这允许下载新的JDK 18版本,这不能通过AdoptOpenJDK获得,同时仍然保持下载不再受Adoptium支持的版本的能力,如JDK 9-10和12-16。

如果您使用内部镜像来下载JDK,有一个新的Gradle属性org.gradle.jvm.toolchain.install.adoptium.baseUri来控制URI的收养基地。这是除了org.gradle.jvm.toolchain.install.adoptopenjdk.baseUri属性,如果在Adoptium API中找不到JDK,仍将使用该属性。

IDE集成改进

Eclipse中改进的测试源分离

此版本为提供了改进的支持测试源在月蚀中。

Eclipse类路径文件由eclipse插件有以下变化:
  1. 测试配置中定义的项目依赖项获取test=true类路径属性
  2. 定义的所有源集和依赖项JVM测试套件插件默认情况下也被标记为测试代码
  3. 这eclipse插件DSL公开属性以配置测试源
eclipse {classpath {testSourceSets = [sourcesSets.test, sourceSets.myTestSourceSet]testConfigurations = [configuration.myTestConfiguration]}
}

当项目在中同步时,这些更改也会反映出来造船.

看见文档了解更多详情。

使用查询单个属性properties工作

内置的properties任务将所有项目属性打印到控制台。现在,这个任务需要一个可选的–property参数,该参数将其配置为仅显示选定的属性。

$ gradle properties --property buildFile> Task :properties------------------------------------------------------------
Root project 'example-project'
------------------------------------------------------------buildFile: /path/to/project/build.gradleBUILD SUCCESSFUL in 550ms
1 actionable task: 1 executed

这对于跟踪CI系统上的特定属性非常有用,并且比以前需要更少的解析和过滤。

Groovydoc公开了更多选项

这Groovydoc任务现在显示更多选项:

  • access:用于控制文档中包含的访问级别,默认为PROTECTED
  • includeAuthor:用于控制作者是否显示在文档中,默认为false
  • processScripts:用于控制文档中是否包含脚本,默认为true
  • includeMainForScripts:用于控制脚本的main方法包含在文档中,默认为true

这些默认值与之前使用的相同,因此默认行为应该没有变化。

-show-version (-V)标志
这-V标志(长格式–show-version)指示Gradle首先打印版本信息,然后继续执行任何请求的任务。这与先前存在的-v(长格式–version)标志,它打印版本信息,然后立即退出。

在CI环境中,此标志可能有助于在日志中记录梯度版本信息,作为单个梯度执行的一部分。

性能改进

默认情况下,Checkstyle任务使用工具链并并行执行。
这Checkstyle插件现在使用Gradle worker API将Checkstyle作为外部工作进程运行,因此多个Checkstyle任务现在可以在一个项目中并行运行。当这些任务中的几个存在于单个项目中时,这可以极大地提高整体构建性能。您可以通过minHeapSize和maxHeapSizeCheckstyle任务的属性。如果出现内存不足错误,请参见Gradle 7.x升级指南。

Checkstyle现在使用JVM工具链以便最小化JDK安装要求。在Java项目中,Checkstyle将使用项目所需的相同版本的Java。在其他类型的项目中,Checkstyle将使用Gradle守护进程所使用的Java版本。

在多线程上运行单个PMD任务

PMD是一个运行在项目的Java源文件上的质量分析工具。

有了这个版本的Gradlethread参数PMD的提议现在通过PMD的扩展和任务暴露了出来。这允许PMD的配置在多个线程上运行其分析。

参见证明文件了解更多信息。

与Java 9+更好的测试兼容性

在Java 9+上运行时,Gradle不再打开java.base/java.util和java.base/java.lang面向所有人的JDK模块Test任务。在某些情况下,这将导致代码在测试期间通过,但在运行时失败。

此更改可能会导致新的测试失败和警告。当在Java 16+上运行时,在JDK内部执行反射的代码将无法通过测试。在Java 9-15上运行时,非法访问警告会出现在日志中。虽然这种变化可能会破坏一些现有的构建,但大多数失败都可能会暴露出被抑制的问题,而这些问题只能在运行时检测到。

有关如何减轻这种变化的详细说明,请参见升级指南了解详情。

安全咨询

CVE-2022-31156-当无法执行签名验证时,依赖项验证可以忽略校验和验证。

提升的功能

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

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

  • 这TargetJvmEnvironment接口现在稳定了。

gradle-7.5.1-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. cgdb基本用法总结
  2. 引号不是字符串中唯一的可以被转义字符。下面是常见的转义序列列表:
  3. caffe学习笔记18-image1000test200数据集分类与检索完整过程
  4. JAVA vector的遍历_谈谈vector容器的三种遍历方法
  5. one_code=soup.find('a',href=re.compile(rill)) NameError: name 're' is not defined
  6. 在iMac上建立一个git仓库
  7. 【Java程序设计】输入输出
  8. java中aotomicInteger_面试官:你说一下对Java中的volatile的理解吧!
  9. python中for else举例_Python 中for...esle和while...else语法
  10. jdbc代码_Mysql Java 驱动代码阅读笔记及 JDBC 规范笔记
  11. Julia: 关于下载库时WinRPM的Bug
  12. 关于微信和微信小程序
  13. 【我们一起写框架】MVVM的WPF框架(一)—序篇
  14. unity 之 Animation 二 BlendTree
  15. 使用POI 删除批注
  16. vs code常用的插件
  17. laravel没有vendor文件夹的解决方法
  18. [DDR]2 - Initialization, Training and Calibration
  19. 图解ReentrantLock底层公平锁和非公平锁实现原理
  20. 会议签到web_GitHub - dzhgb/EasyMeeting_Web: [ThinkPHP5] 智能会议室Web端:账号管理、会议室设置、用户预约、在线签到...

热门文章

  1. 易学易用的唱歌技巧(颤音 高音等的运用)
  2. 最后3天|扩增子16S分析第9期(报名直播课免费参加线下2020.8)
  3. 捷径体系以科技连接未来,全力打造健身新场景
  4. 使用Git搭建个人博客
  5. IDEA2021.1版本安装教程
  6. 浪里个浪 FZU - 2261 (多源最短路问题)
  7. AWS Organizations如何确保云帐户安全?
  8. flowable不同版本对应的spring版本以及springboot版本
  9. Jetson 系列(二十五) onnxruntime-gpu
  10. 第四次实验 第一期 紫金学院 Java 抽象类和接口