概述
Gradle 7.6 发布
Gradle团队很兴奋地宣布Gradle 7.6。
此版本包括用Java 19构建和运行代码,一面旗帜单独重新运行任务,一个新的强类型依赖块对于JVM测试套件,以及用于Java工具链供应的可插拔系统。
和往常一样,还有一些性能改进,比如增强了配置缓存和增量编译。
下载连接:点击进入快速下载
升级说明
通过更新您的包装器,切换您的构建以使用Gradle 7.6:
./gradlew wrapper --gradle-version=7.6
参见Gradle 7.x升级指南了解升级到Gradle 7.6时的弃用、重大变更和其他注意事项。
关于Java、Groovy、Kotlin和Android兼容性,请参见完全兼容性说明。
新功能和可用性改进
虚拟机(Java Virtual Machine的缩写)
增加了对Java 19的支持
Gradle 7.6支持在Java 19上编译、测试和运行。
引入了强类型dependenciesJVM测试套件的块
这JVM测试套件 dependencies块现在使用一个强类型API。这使得构建逻辑更加清晰,并改进了ide中的帮助,尤其是对于Kotlin DSL。
以前,JVM测试套件dependencies仅阻止接受的类型依赖项Object。
testing {
suites {
val test by getting(JvmTestSuite::class) {
useJUnitJupiter()
dependencies {
implementation(project(":foo")) {
// Receiver (this) is of type Dependency
// To access ProjectDependency
// methods, smart-cast:
this as ProjectDependency
// Now available as a ProjectDependency
println(dependencyProject)
}
}
}
}
}
现在,每个符号都提供了它的Dependency子类型:
testing {
suites {
val test by getting(JvmTestSuite::class) {
useJUnitJupiter()
dependencies {
implementation(project(":foo")) {
// `this` already of type ProjectDependency
println(dependencyProject)
}
}
}
}
}
例如,使用String提供一个ExternalModuleDependency。使用FileCollection提供了FileCollectionDependency。这允许Java和Kotlin正确地配置所有类型的依赖项,并改进IDE对Groovy DSL的支持。
此外,Kotlin DSL现在支持该块中外部依赖项的命名参数:
testing {
suites {
"test"(JvmTestSuite::class) {
useJUnitJupiter()
dependencies {
implementation(module(group = "com.google.guava",
name = "guava",
version = "31.1-jre"))
}
}
}
}
有关测试套件的更多信息dependencies块,看到了吗测试套件和顶级依赖之间的差异。
增加了对从任意存储库下载Java工具链的支持
从Gradle 7.6开始,Gradle可以下载JVM工具链从任意的存储库中。默认情况下,Gradle从Adoptium/AdoptOpenJDK下载工具链。现在,您可以使用工具链解析器插件用自己选择的存储库覆盖默认提供者。
例如,下面使用了自定义插件,这些插件提供AzulResolver和AdoptiumResolver要为Adoptium和Azul添加自定义工具链:
toolchainManagement {
jvm {
javaRepositories {
repository("azul") {
resolverClass.set(AzulResolver::class.java)
credentials {
username = "user"
password = "password"
}
authentication {
create<DigestAuthentication>("digest")
}
}
repository("adoptium") {
resolverClass.set(AdoptiumResolver::class.java)
}
}
}
}
有关使用自定义工具链解析器的更多信息,请参见工具链下载存储库文档。有关编写自定义工具链解析器的更多信息,请参见工具链解析器插件文档。
添加了对编译失败后增量编译的支持
Gradle支持Java增量编译默认情况下和Groovy增量编译作为选择加入的实验特征。
在以前的版本中,编译失败会导致下一次编译执行完全重新编译。从Gradle 7.6开始,Java和Groovy增量编译即使在失败后也可以工作。
当启用增量编译时,默认情况下启用此功能。可以使用禁用该功能incrementalAfterFailure编译选项。
引入了对Java 9+网络调试的支持
您可以使用运行Java测试或应用程序子进程调试选项通过网络接受调试器客户端连接。如果调试选项只指定端口,而不指定主机地址,则接受的连接集取决于您的Java版本:
- 在Java 9之前,调试器客户端接受来自任何机器的连接。
- 从Java 9开始,调试器客户接受来自主机的连接仅仅。
此版本向添加了一个新属性JavaDebugOptions: host。这允许您指定调试器主机地址和端口。
类似地,新的Gradle属性org.gradle.debug.host现在启用使用调试器服务器运行Gradle进程在Java 9及以上版本上接受网络连接。
在Java 9和更高版本中,使用特殊的主机地址值*使调试器服务器侦听所有网络接口。否则,使用机器网络接口之一的地址。
从生成的修订相关性initMaven转换自implementation到api
这init任务现在增加了编译时Maven对Gradle的依赖api转换Maven项目时的配置。这大大减少了编译错误的数量。还是推荐使用implementation可能的话。
有关Maven转换的更多信息,请参见构建初始化插件。
总体改进
单个任务的引入标志rerun
所有任务现在都可以使用–rerun选项。该选项的工作方式如下–rerun-tasks,除了–rerun仅影响单个任务。例如,您可以像这样强制测试忽略最新检查:
gradle test --rerun
有关重新运行选项的更多信息,请参见内置任务选项。
在使用生成的项目中重新定位约定插件init
????这个功能正在孵化.
当使用init任务和选择孵化功能,Gradle现在将常规插件放在build-logic目录而不是在buildSrc。
约定插件是Gradle推荐的组织构建逻辑的方式,你可以通过应用和配置核心和外部插件来构建定制的构建逻辑。
有关约定插件的更多信息,请参见惯例插件。
为包装下载引入了网络超时配置
现在可以配置下载Gradle包装文件的网络超时。默认值为10000毫秒,可以通过多种方式进行更改:
从命令行:
$ ./gradlew wrapper --network-timeout=30000
在您的构建脚本或约定插件中:
tasks.wrapper {
networkTimeout.set(30000)
}
或者在gradle/wrapper/gradle-wrapper.properties:
networkTimeout=30000
有关Gradle包装的更多信息,请参见Gradle包装.
引入了用消息解释为什么任务被跳过的能力
现在,当使用有条件地禁用任务时,可以提供原因消息Task.onlyIf述语:
tasks.register("slowBenchmark") {
onlyIf("slow benchmarks not enabled") {
false
}
}
Gradle在日志级别输出原因消息INFO。若要向控制台输出原因消息,请使用–info或者–debug 日志级别.
依赖性管理
阐明了中歧义消除规则检查的顺序resolvableConfigurations报告
属性歧义消除规则控制Gradle在以下情况下选择的依赖关系的变体:
- 对于一个请求的属性,存在具有不同兼容值的多个依赖变量
- 没有任何变体与该属性完全匹配
在这种情况下,属性歧义消除规则选择单个匹配的依赖变量。这resolvableConfigurations报告任务现在打印这些规则的顺序:
$ ./gradlew resolvableConfigurations
--------------------------------------------------
Disambiguation Rules
--------------------------------------------------
The following Attributes have disambiguation rules defined.
- flavor
- org.gradle.category (1)
- org.gradle.dependency.bundling (5)
- org.gradle.jvm.environment (6)
- org.gradle.jvm.version (3)
- org.gradle.libraryelements (4)
- org.gradle.plugin.api-version
- org.gradle.usage (2)
(#): Attribute disambiguation precedence
如需详细资讯,请参阅属性歧义消除规则.
配置缓存
这配置缓存通过缓存配置阶段的结果并在后续构建中重用它来缩短构建时间。
改进的配置缓存故障恢复
在以前的Gradle版本中,依赖关系解析失败后,可能会使配置缓存条目处于永久损坏状态。接下来的构建只会重现失败,而不会尝试从中恢复。
从Gradle 7.6开始,情况不再如此。无论是否启用配置缓存,Gradle都以完全相同的方式从依赖关系解析故障中恢复。
扩展配置缓存任务兼容性
这dependencies, buildEnvironment, projects和properties任务现在与配置缓存兼容。
增加了对Maven发布插件的配置缓存支持
这Maven发布插件现在与配置缓存兼容。
请注意,使用凭据时,配置缓存需要安全凭据容器。
改进的处理–offline选择权
Gradle现在分别存储在线和离线模式的配置缓存。此更改支持需要在配置期间根据–offline选项有效。
如需详细资讯,请参阅这–offlineCLI选项.
插件开发
引入了对类型任务选项的支持Integer
现在可以传递声明为Property从命令行。
例如,以下任务选项:
@Option(option = "integer-option", description = "description")
public abstract Property<Integer> getIntegerOption();
可以从命令行传递,如下所示:
gradle myCustomTask --integer-option=123
IDE集成
这些改进是针对IDE集成商的,并不直接针对最终用户,直到他们的特定IDE实现了集成。
增强了测试事件,以区分断言和框架失败
Gradle 7.6为引入了新的故障类型Failure由返回的接口FailureResult.getFailures(): TestAssertionFailure和TestFrameworkFailure。ide现在可以使用进度事件监听器来区分断言和框架失败。对于公开预期和实际值的测试框架,TestAssertionFailure包含这些值。
介绍TestLauncher任务执行
这TestLauncher接口现在允许工具API客户机执行任何任务以及所选择的测试:
ProjectConnection connection = ...
connection.newTestLauncher()
.withTaskAndTestClasses("integTest", ["org.MyTest"])
.forTasks("startDB")
.run()
通过引入类、方法、包和模式测试选择TestLauncher
这测试发射器接口现在允许工具API客户端使用新的API选择测试类、方法、包和模式。
TestLauncher testLauncher = projectConnection.newTestLauncher();
testLauncher.withTestsFor(spec -> {
spec.forTaskPath(":test")
.includePackage("org.pkg")
.includeClass("com.TestClass")
.includeMethod("com.TestClass")
.includePattern("io.*")
}).run();
添加了对使用工具API向构建传递系统属性的支持
在7.6之前,工具API从主机JVM的系统属性开始构建。这将配置从IDE泄露到了构建中。从Gradle 7.6开始,LongRunningOperation.withSystemProperties(Map)提供一组独立的生成系统属性。如需详细资讯,请参阅LongRunningOperation。
提升的功能
升级功能是在Gradle的早期版本中酝酿的功能,但现在受到支持并具有向后兼容性。请参阅“用户手册”一节功能生命周期”了解更多信息。
此Gradle版本将以下功能提升为稳定版:
- getTestSources和getTestResources
- getDestinationDirectory和getTestResults
已修复问题
在Gradle 7.6中修复了152个问题。
[#22484] -Java . source sets . main . output . classes dirs不再依赖于Gradle 7.6中的classes任务
[#22467] -文件系统事件在文件监视器错误后被忽略
[#22464] -并行项目模型构建的问题
[#22423] -执行计划中频繁出现StackOverflowError
[#22385] -以配置缓存兼容的方式支持buildscan.background回调的梯度端API
[#22320] - java.lang.ClassCastException:类org . grad le . execution . plan . compositenodegroup不能转换为类org . grad le . execution . plan . ordinal group
[#22305] -当传入ValueSource参数时,自定义ValueSource会错误地跟踪在获取()中使用的文件等
[#22295] -依赖性验证-回滚密钥环歧义消除
[#22279] -Gradle 7.6(UnsupportedOperationException-> preresolvedsolvablearratifact . getmoduleversion)
[#22235] -ConcurrentModificationException在使用configureondemand的子项目中从命令行(-x)中排除多任务时出现异常
[#22196] -报告@Input注释被错误应用于基于文件/目录的属性,作为警告
[#22144] -调查工件分辨率变化的回归
[#22046] -使用includeBuild(")时配置缓存失败。)
[#22013] -测试-报告-汇总'文档缺少对
继续’标志的提及
[#21990] -JacocoReportAggregationPlugin不能与JvmTestSuitePlugin一起使用
[#21983] - Gradle构建包对插件有snakeyaml依赖性,具有高基础分数的CVE
[#21975] - 7.5.1 gradle版本-Java . lang . stack overflow error at org . gradle . execution . plan . finalizergroup $ finalizesmembers . getfilteredsuccessorsfor(finalizergroup . Java:297)
[#21962] -7.5:mustrunfafter(配置)导致ActionNode无法转换为TaskNode
[#21898] -将折旧日志记录添加到org . grad le . util . grad lever ion . get next major()
[#21886] -弃用org . grad le . API . internal . artifacts . DSL . dependencies . dependency factory ' [#21848] -由于fastutil缩小转换,梯度分布jar不可再现 [#21839] -报告org.gradle.util包中已弃用成员的弃用情况 [#21783] -无论是否启用配置缓存,都应以相同的方式引发依赖关系解析错误 [#21781] - "withVariantReselection" API被破坏 [#21758] -如果显式可执行文件不存在,JavaCompile和测试任务会自动忽略它 [#21748] -<任务>-配置缓存命中时重新运行失败 [#21708] -不能排除复合构建任务 [#21644] -当所有类未被移除时,失败后的增量编译问题 [#21624] -无法在新的Checkstyle任务中设置系统属性,最终在配置文件中使用“实体”功能时被NPE失败 [#21616] -工具链探测无法处理来自java的警告 [#21610] -包含klib扩展作为java规范化的KNOWN_ZIP_EXTENSIONS [#21591] -使用约定映射和同名属性时出现NullPointerException [#21559] -苦差事:将JUnit和TestNG“虚拟”测试移到textFixtures [#21542] -处理生成失败时FinalizerGroup.isCanCancel中的StackOverflowError [#21529] -添加对JDK19的支持 [#21522] -到Java插件文档页面上的processResources的链接断开 [#21465] -无法提取Renjin 3.5 beta76存档的内容 [#21325] -“无法取得进展运行工作”redux [#21323] -在具有多个CPU内核的计算机上,完全最新版本的性能很差 [#21306] -:跨越多行的Kotlin函数签名上的孵化报告txt报告程序中断 [#21252] - Gradle不会从写入缓存时发生的依赖关系解析故障中恢复 [#21209] -引入强类型依赖块 [#21203] -重新编译带注释的源依赖项时出现增量注释处理问题 [#21158] -记录“-”周围的行为,以区分任务选项和Gradle命令行标志 [#21116] - StackOverflowError从内部Gradle代码中抛出。 [#21111] -使用快照版本时,将文件添加到从ComponentMetadataRules创建的变体不起作用 [#21074] -使用Kotlin多平台插件时,ProjectBuilder测试失败 [#21011] -Deprecate org . grad le . kot Lin . DSL . precompiled . accessors . strict = false或unset [#21001] -添加文档和片段,以便在测试套件之间共享配置 [#20995] -无法在IDE中查看生成的Kotlin依赖扩展的KDoc或源代码 [#20981] - Gradle init不转义单引号 [#20977] -把Kotlin升级到1.7.0,也许可以试试K2编译器? [#20975] -工件转换在所有依赖项准备就绪之前执行 [#20956] -将歧义消除规则的优先级顺序添加到可解析配置报告中 [#20945] -重用配置缓存时复合构建失败 [#20928] -
Manifest.from(对象…)不支持合并清单实现 [#20902] -接受用于配置测试框架版本的提供者< String > [#20891] -
startScripts '依赖于路径中的chmod'。 [#20883] -停止计算未使用的日志记录字符串 [#20857] -“使用文件”文档中的错误警告 [#20852] -文档中的拼写错误:版本应为versionRef。 [#20847] -当插件作为buildSrc公共依赖项添加时,插件变体被忽略 [#20846] -自Gradle 7.4.x以来,测试任务回避不再有效 [#20824] -build script jar没有保持其原始压缩 [#20813] -
cachingjvmtetadatadetector在守护程序的生存期内缓存无效安装的元数据,而不是构建 [#20794] -仪器调用基于动态的Groovy字节码进行配置缓存输入检测 [#20778] - IdentityTransform在更新到7.5-rc1后失败,出现FileNotFound [#20740] - Gradle应该在调试模式下将空javac参数记录为引号对 [#20728] -将https://pgp.mit.edu添加到默认密钥服务器列表中。 [#20722] -任务buildNeeded和buildDependents过早解析配置 [#20709] -JDK 17上的配置缓存异常:InaccessibleObjectException copyonwritearraylist . writeobject [#20708] -@ class path with @ NormalizeLineEndings无法捕获JDK8上zip条目的差异 [#20702] -跟进乐观锁定更改#20687 [#20695] -预编译的Kotlin脚本插件在显式API模式下被破坏 [#20668] -修复AbstractIdeLifecycleIntegrationTest中的隐式命令行排序测试 [#20644] - JVM 9+无法启用远程调试 [#20641] -仅重新运行请求任务的选项 [#20630] - InitBuild任务应将Maven的“编译”范围转换为“api ”,而不是“实现” [#20626] -关于如何访问settings.gradle中的gradle.properties值的文档可以增强 [#20612] -构建期间出错:用于编码windows-1252的BuildOperationType.java不可映射字符(0x9D) [#20611] -无法应用- no-daemon:当前进程参数格式错误 [#20579] -在运行之间重用Scala编译器 [#20517] -隐式依赖关系弃用警告链接到构建扫描中的默认“创作任务” [#20510] - DirectDependenciesMetadata移除“mutate”以前返回的DirectDependencyMetadata实例,removeAll(集合)完全是broken‼ [#20482] -当使用jacoco报告聚合插件时,有些类在报告中是不可点击的。 [#20478] -在某些情况下,增量java编译器不会检测类型参数中使用的类的更改 [#20473] -
./gradlew projects在启用配置缓存的情况下第二次失败 [#20468] -更新gradle发行版中易受攻击的旧依赖项(7.4.2) [#20461] - " -脱机"执行选项应被视为配置输入 [#20432] - JaCoCo报告聚合插件使用jar,而不是allCodeCoverageReportClassDirectories配置中的类目录 [#20372] -支持Java 19 [#20370] -关于使用版本范围中定义的值,版本目录文档已过时 [#20243] -考虑删除对目录名的反对意见 [#20142] -使用maven-publish发布导致收缩的pom.xml版本 [#20140] -密钥导出写出重复的密钥 [#20062] -主要任务排序中的回归 [#19953] -复合构建分层多报告示例-按照说明操作时失败 [#19939] - Gradle 7.4回归在工具链支持中,Gradle报告“无效的编码名称“UTF8”” [#19870] -用于integrationTest的JVM测试套件插件,如何在多模块项目中将所有测试依赖项添加到integrationTest任务中 [#19842]-“maven-publish”插件中的“publish”任务应该与配置缓存一起工作 [#19761] -更新DefaultJvmTestSuite和BuildInit以在应用useKotlinTest时使用JUnit 5 [#19759] -改进TestLauncher接口 [#19752] -如果项目路径中的任何目录以字符“u”开头,VERSION_CATALOGS功能将失败:“非法unicode转义” [#19734] -将嵌入式Kotlin升级到1.7.10 [#19608] -改进输出包含集成测试的输出 [#19602] -使编译任务在失败后递增 [#19453] -使用Micronaut时,编译错误后增量缓存丢失 [#19446] -在配置期间抛出TimeoutException分钟后,Gradle Kotlin IO impl) [#19296] -记录在哪里可以找到任务中的选项 [#19234] - JavaToolchainService在JVM生态系统项目中不可用 [#19232] -测试套件中没有gradleTestKit [#19192] -测试套件插件中的依赖项不支持命名参数表示法 [#19140] -支持用于自动供应工具链的“Zulu OpenJDK发现API” [#19085] -删除内部“org . grad le . kot Lin . DSL . accessors”功能标志 [#19077] -[构建扫描]基于类的设置插件在使用pluginManagement.includeBuild(...) [#18698] -向分发类型添加分类器属性 [#18627] -更新捆绑的JUnit 5启动器 [#18227] -预编译的Kotlin DSL脚本将JVM目标固定为8 [#17575] -允许为gradle包装下载设置自定义超时 [#17470] -
依赖关系’任务与配置缓存不兼容
[#17334] -向TAPI客户端报告计划执行的任务数量
[#17327] -支持可序列化的lambdas进行最新检查
[#16897] -检测到IBM JDK,但从未选择它
[#16865] - DependencyHandler创建方法缺少带操作重载的配置
[#16702] -"属性"任务与配置缓存不兼容
[#16642] -重试连接连接在解析过程中关闭。
[#16596] -支持更多供应商的Java工具链的自动下载,而不仅仅是采用OpenJDK
[#16423] -配置缓存模式没有为文件树序列化
[#16295] -测试发射器TAPI改进
[#16140] - Gradle javaToolChains -输出具有误导性
[#15918] - javaToolchains任务提供的错误信息不足
[#15326] - gradle init不应创建buildSrc,而应使用包含的构建逻辑构建
[#14375] -用于决定是否启用配置缓存的公共API
[#13601] -编译失败后没有java增量编译-“无法从上次编译中获取源类映射关系。”
[#13323] -工具API事件的扩展测试结果
[#13274] -在构建之间重用编译器守护进程
[#12912] -改进Java和JVM项目的测试设置和文档
[#11703] -构建脚本类名取决于绝对路径
[#10549] -mustrunfafter不考虑终结器任务的依赖关系
[#9166] -能够重新运行选定的任务
[#7923] -通过Task.doLast(String,action)添加时,不跟踪任务操作实现
[#7541] -添加为task.onlyIf操作指定“名称”的功能(可能还有其他功能,如更新时间)
[#3605] -解压缩后移除包装拉链
[#1775] -文档中未指定Project.afterEvaluate执行顺序
[#13468] -使“maven-publish”插件支持配置缓存
[#22582] -7.6-RC-1中使用无效Maven存储库名称时的回归
[#22566] -添加额外的条目到JavaVersion,以保证将来的兼容性
[#22552] - 7.6 RC1:版本目录依赖包的不支持的旋转异常
[#22650] - 7.6 RC1/2:版本目录捆绑相关性约束的不支持的旋转异常
[#22761] -“运行工作无法取得进展” redux2
[#22734] -“无法使用7.6-rc-3运行工作”
[#22720] - 7.6 RC3:不能使用提供的参数调用DependencyAdder.invoke
最后
以上就是寂寞过客为你收集整理的gradle-7.6-all 百度网盘下载的全部内容,希望文章能够帮你解决gradle-7.6-all 百度网盘下载所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复