gradle-7.1-all 百度网盘下载

Gradle 7.1 现已发布

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

这个版本修订了增量Java编译并使它更容易配置Groovy、Scala和Antlr源集在科特林DSL。

也有几个新折旧和微小的改进让Gradle更容易使用。

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

升级说明

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

./gradlew wrapper --gradle-version=7.1

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

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

改进的Java增量编译

格雷尔有一个Java增量编译器默认情况下启用,通过只编译需要编译的Java源文件来加快增量编译。

Java增量编译器在这个版本中得到了实质性的改进。

增量编译分析现在存储在构建缓存中

在以前的Gradle版本中,增量编译分析只存储在本地。这意味着当编译任务的输出从构建缓存,后续的构建不能进行增量编译,总是需要完全重新编译。

在Gradle 7.1中,增量分析的结果现在存储在构建缓存中,从构建缓存中提取后的第一次编译将是增量的。

增量编译分析速度更快,使用的内存和磁盘空间更少

增量编译分析需要Gradle从类文件中提取符号,并分析依赖关系的传递图,以确定特定符号的使用者。这会消耗大量内存和时间。

Gradle 7.1显著降低了增量编译分析的成本,以及分析的规模。

这种变化的影响因项目而异,但非常明显。在Gradle项目本身上,我们能够以两倍的速度进行增量编译!

对常数的更改不再触发完全重新编译

最后,由于Java编译器的工作方式,以前的Gradle版本被迫在任何的上游依赖项中的常量已更改。

Gradle 7.1引入了一个编译器插件,该插件执行常量使用情况跟踪,并且只在常量改变时才重新编译常量的消费者。

这可以加速使用大量常量的项目的增量构建,这对于从模板引擎生成的代码来说是很常见的。

Kotlin DSL中更简单的源集配置

使用Kotlin DSL时,在为Java以外的语言配置源位置时,需要一个特殊的构造。例如,下面是您将如何配置groovy来源:

sourceSets {
    main {
        withConvention(GroovySourceSet::class) {
            groovy {
                setSrcDirs(listOf("src/groovy"))
            }
        }
    }
}

Gradle 7.1在以下插件中为每种语言定义了源集的扩展:

  • groovy
  • antlr
  • scala
    这意味着Kotlin DSL可以访问自动生成的访问器和withConvention不再需要:
sourceSets {
    main {
        groovy {
            setSrcDirs(listOf("src/groovy"))
        }
    }
}

为编译任务构建缓存友好的命令行参数

使用声明编译器守护程序的参数时jvmArgs,这些参数总是被视为String编译任务的输入。

有时,这些参数表示需要作为构建缓存键的一部分捕获的文件的路径。将这些参数建模为输入文件可以提高编译任务的增量,并避免不必要的缓存缺失。

以前,Java编译器调用的参数可以在编译器参数提供程序,但是对于编译器守护进程本身的命令行参数,没有办法做到这一点。现在,您可以为编译器守护程序提供命令行参数JavaCompile, GroovyCompile,以及ScalaCompile任务使用jvmArgumentProviders.

CommandLineArgumentProvider通过配置的对象jvmArgumentProviders将被询问输入和/或输出注释,Gradle将把这些添加到各自的任务中。

def javaAgent = objects.newInstance(JavaAgent)
javaAgent.jarFile = file('some/path/to/agent.jar')

// This can be done with Groovy, Java or Scala compilation
tasks.withType(GroovyCompile).configureEach {
    groovyOptions.forkOptions.jvmArgumentProviders.add(javaAgent)
}

abstract class JavaAgent implements CommandLineArgumentProvider {
    @Classpath
    abstract RegularFileProperty getJarFile()

    @Override
    List<String> asArguments() {
        def jarFilePath = jarFile.get().asFile.absolutePath
        return ["-javaagent:${jarFilePath}".toString()]
    }
}

JaCoCo插件支持Java 15/16

JaCoCo插件已升级到最新版本JaCoCo版本0.8.7其中包括对Java 15和16的支持以及对Java 17的实验性支持。

已修复问题

在Gradle 7.1中修复了46个问题。

[#17359] -构建扫描插件在Gradle 7.1-rc-1的Elasticsearch构建中停止工作
[#17319] -将Gradle 7.1-rc-1项目导入IDEA时出现例外“多个构建器可用于构建模型”
[#17252] -添加/usr/lib64/jvm作为Linux工具链位置
[#17217] -启用配置缓存时,无法发送构建扫描
[#17195] -应该果断地选择Java 9之前的工具链
[#17130] -文档:snipped使用了不正确的验证错误抑制id
[#17085] -在JavaInstallationMetadata中提供详细的工具信息
[#17049] -使用第三方插件跟进Report.enabled弃用
[#17048] -跟进javaexechandlebuilder . setmain(String)弃用第三方插件
[#17047] -使用第三方插件跟进WorkerExecutor.submit()弃用
[#16985] -持久化的工作输出应该精确地记录执行工作所花费的原始执行时间
[#16974] -反对消耗代码质量+ antlr插件配置
[#16939] -使JacocoCoverageVerification可缓存
[#16806] -增量编译器更改后的性能回归
[#16784] -允许迭代版本目录中声明的依赖项
[#16775] -在7.0中使用“Provider#orElse”会导致“查询属性的映射值”…任务前…不支持已完成”错误
[#16743] -控制台上的构建结束摘要应报告包含的构建中的任务
[#16402] -不推荐描述构建布局的命令行选项
[#16398] -使用新的并行TAPI API时,模型构建挂起
[#16255] -避免显示某些验证反对警告的类型
[#16180] -配置缓存无法恢复URL类型的属性
[#15983] -确保跟进冒烟测试中的弃用警告
[#15825] -"任务"任务与配置缓存不兼容
[#15681] -从7.0开始,不推荐使用具有稳定属性的getter/setter作为替代
[#15679] - CreateOutputsStep在FileTree上输出文件批注时尝试对现有文件调用mkdirs
[#15638] -反对“上传”任务
[#15569] - zipTree不传播任务相关性
[#15416] -确保预编译设置脚本插件- Kotlin DSL和Groovy DSL支持“插件{}”和“插件管理{}”块
[#15404] -包含预编译Kotlin DSL插件的构建在某些情况下无法导入到IDEA中
[#15378] -在设置构建脚本中使用failOnVersionConflict解决策略会导致NullPointerException
[#15214] -kot Lin预编译脚本插件的访问器生成任务会产生和存储有问题的输出
[#14107] - DependencySubstitutions API进化(不赞成“Substitution.with”)
[#13891] -不赞成包含根项目目录之外的子项目
[#13122] -"尚未加载GradleProperties "错误,当使用ProjectBuilder构建项目时
[#12767] -弃用“JacocoMerge”任务
[#11621] -使反对警告更加清晰
[#10796] -完全不赞成上传任务和相关概念
[#10061] -弃用旧工件转换API
[#9804] -对Groovy增量编译源类映射使用不同的存储方法
[#9052] -从增量Java编译器中删除自定义变更检测代码
[#8404] -对“Provider”类型的属性使用(内部)约定映射进行弃用
[#6825] -使用intellij项目导入时,无法从初始化脚本中读取gradle.properties中的系统属性
[#4884] -提供公共升级API
[#3425] -反对`公约’概念
[#3191] -公开静态类型的方法从源集中获取约定
[#1001] -buildSrc的Init脚本应该能够访问gradle.properties

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值