Gradle 7.1 发布

栏目: 软件资讯 · 发布时间: 3年前

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

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

此版本改进了增量 Java 编译,并使 Kotlin DSL 中配置 Groovy、Scala 和 Antlr sourcesets 变得更加容易。此外还有一些新的弃用和小的改进,使 Gradle 更容易使用。

改进的 Java 增量编译

Gradle 有一个默认启用的 Java 增量编译器,它通过只编译需要编译的 Java 源文件来加快增量构建。Java 增量编译器在此版本中获得了重大改进。

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

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

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

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

增量编译分析需要 Gradle 从 class files 中提取符号并分析依赖关系的传递图以确定特定符号的 consumers。这会消耗大量内存和时间。

Gradle 7.1 显着降低了增量编译分析的成本,以及分析的规模。此更改的影响因项目而异,但可能非常明显。官方表示,在 Gradle 项目本身,其能够将增量编译速度提高两倍。

对常量的更改不再触发全面的重新编译

由于 Java 编译器的工作方式,以前的 Gradle 版本在上游依赖项中的任何常量发生变化时,就会被迫执行全面的重新编译。

Gradle 7.1 引入了一个编译器插件,该插件执行常量使用跟踪,并且仅在常量更改时重新编译常量的 consumers。这可以加速使用大量常量的项目的增量构建,这对于从模板引擎生成的代码很常见。

在 Kotlin DSL 中更容易配置 source set

在使用 Kotlin DSL 时,为 Java 以外的语言配置 source locations 时需要一个特殊的构造。 例如,以下是配置的groovy sources 方式:

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

Gradle 7.1 在以下插件中定义了对每种语言的 source sets 的扩展:

  • groovy
  • antlr
  • scala

这意味着 Kotlin DSL 将可以访问自动生成的访问器,withConvention不再是必要的:

sourceSets {
    main {
        groovy {
            setSrcDirs(listOf("src/groovy"))
        }
    }
}

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

现在可以使用 jvmArgumentProviders 为 JavaCompileGroovyCompile 和 ScalaCompile 任务的编译器守护程序提供命令行参数。

通过jvmArgumentProviders配置的 CommandLineArgumentProvider 对象将被询问输入和/或输出注释,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 的实验性支持。

更多详情可查看更新说明:https://docs.gradle.org/7.1/release-notes.html


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Swift编程权威指南(第2版)

Swift编程权威指南(第2版)

[美] Matthew Mathias、[美] John Gallagher / 陈晓亮 / 人民邮电出版社 / 2017-6 / 89.00元

Big Nerd Ranch是美国一家专业的移动开发技术培训机构,本书是其培训教材。书中系统讲解了在iOS和macOS平台上,使用苹果的Swift语言开发iPhone、iPad和Mac应用的基本概念和编程技巧。主要围绕使用Swift语言进行iOS和macOS开发,结合大量代码示例,教会读者利用高级iOS和macOS特性开发真实的应用。一起来看看 《Swift编程权威指南(第2版)》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具