Gradle 5.0 正式版发布

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangzhihong8/article/details/84609827

Gradle 5.0 正式版发布了,官方表示这是史上最快、最安全,最强大的版本,且没有之一。改进的增量编译和增量注释处理构建在已经具有构建缓存和最新检查功能的可靠性能基础之上。依赖对齐和版本锁定提供了可扩展且灵活的依赖管理模型。通过新的性能和依赖关系管理、日志记录和弃用的 API 使用检查,构建扫描得到了显著的改进。静态类型的 Kotlin DSL 可在创建构建逻辑时提供代码完成、重构和其他的 IDE 辅助。

根据官方文档介绍,此次更新主要带来了如下几个方面的改进:
更快的构建
细粒度的传递依赖管理
编写 Gradle 构建逻辑
更高效的内存执行
新的 Gradle 调用选项
新的 Gradle 任务和插件 API

更快的构建

缓慢的构建过程既浪费钱又浪费精力,而通过使用Gradle 5.0中的新构建缓存和增量处理特性,将使得构建过程带来质的提升。
升级到Gradle 5.0之后,您的构建速度将明显提升,您还可以通过使用和配置本节中描述的其他特性来进一步提高构建的性能。
在这里插入图片描述

构建缓存

通过重用构建缓存来避免重复的构建工作,这使得Gradle的构建将非常快,Gradle 4.0引入了构建缓存,其目的是重用以前调用Gradle时的输出。

现在,Gradle 5.0可以用于Android、Kotlin、c++、Scala和许多其他插件的插件,使得任务可以缓存,因此可以跨不同的机器重用。有效地使用构建缓存可以将构建时间减少90%左右。

此外,Gradle 5.0中的构建缓存在很多场景中也是启用的,例如当一个任务声明一个@ outputdirectory或@OutputFiles集合时。
在这里插入图片描述

Java增量编译

在Gradle 5.0中,增量编译器是经过高度优化的,且默认使用增量编译功能。这是一个非常棒的消息,因为编译java任务不需要重新编译所有的源文件,除了第一次之外,这将大大的提供代码编译的效率。

增量注解处理

Gradle 5.0中的增量编译器支持增量注解处理,当有注解处理程序时,可以显著提高增量编译的效率。这是一个重要的创新,因为依赖注解处理器的项目越来越多。

要利用增量注解处理,请确保升级到选择该特性的注解处理程序版本。您可以通过info日志记录或查看注解处理程序来发现给定的注解过程是否具有支持增量功能。

使用新的annotationProcessor配置可以方便地管理注解处理器,并将它们放到注解处理器路径上。

构建扫描

通过对性能、依赖管理、日志记录和废弃api的使用进行新的检查,构建扫描有了显著的改进。这是一个免费的服务,主要提供给Gradle用户在需要添加扫描时使用,在命令行上执行Gradle或应用和配置即可构建扫描。

扫描二维码关注公众号,回复: 4283250 查看本文章

细粒度的传递依赖管理

Gradle 5.0提供了几个新的特性来定制如何选择依赖项,以及改进的POM和BOM支持:

  • 依赖约束允许您定义版本或版本范围,从而限制和传递依赖版本(Maven不支持)。
  • 平台定义(又称Maven BOM依赖项)是本地支持的,它允许在不使用外部插件的情况下导入Spring之类的东西。
  • 依赖项对齐允许逻辑组中的不同模块(例如Jackson模块)对齐到相同的版本。

依赖约束

依赖约束提供了对传递依赖项的可靠性控制,已声明的约束列在改进的依赖关系洞察报告和构建扫描中。例如,下面是常见的Groovy依赖脚本:

dependencies {
    implementation 'org.apache.httpcomponents:httpclient'
    constraints {
        implementation('org.apache.httpcomponents:httpclient:4.5.3') {
            because 'previous versions have a bug impacting this application'
        }
        implementation('commons-codec:commons-codec:1.11') {
            because 'version 1.9 pulled from httpclient has bugs affecting this application'
        }
    }
}

OM支持

Gradle 5.0可导入BOM文件,bom (bill of materials) 可以有效解决同一项目,不同版本依赖的问题。

dependencies {
    // import a BOM
    implementation platform('org.springframework.boot:spring-boot-dependencies:1.5.8.RELEASE')

    // define dependencies without versions
    implementation 'com.google.code.gson:gson'
    implementation 'dom4j:dom4j'
}

此外,Gradle 5.0在使用Maven构建生成的依赖项时提供了更无缝的体验。

  • 在使用POM文件时,Gradle将正确地分离编译和运行时范围。这可以有效的避免由于以前在编译类路径中包含运行时依赖项而导致的性能下降和依赖项泄漏问题。
  • Gradle现在也可以用在< pom>元素中。

依赖对齐

依赖项版本对齐,允许属于同一逻辑组(平台)的不同模块在依赖项中拥有相同的版本。

这确保所有Spring或Hibernate依赖项具有相同版本的问题。事实上,有许多库是以集合的形式发布的,集合中的每个库具有相同的版本。

依赖版本锁定

您可以使用Gradle 5.0将动态或远程依赖项锁定到特定的版本,从而使依赖项解析更加确定和可重现,这可以防止依赖项的更改带来地破坏构建问题。

编写 Gradle 构建逻辑

现在可以使用Kotlin编写Gradle构建脚本。此外,gradle init还扩展了项目类型和交互性。

Kotlin DSL帮助信息

Kotlin DSL 从1.0版本便提供了对Gradle的支持。Kotlin中的静态类型允许工具提供更好的IDE帮助,包括调试和重构构建脚本、自动完成和您期望的其他一切。

如果您对用Kotlin编写构建感兴趣,可以从Gradle Kotlin DSL入门开始
在这里插入图片描述

扩大和互动

希望使用Gradle构建项目的用户可以选择其他项目类型一起使用,如kotlin-library和kotlin-application。此外,您可以选择生成Groovy或Kotlin DSL构建脚本,并自定义项目名称和包。
在这里插入图片描述

更有指导性的文档

此外,Gradle文档和入门指南提供了更多的信息,并且更容易发现和访问,主要体现在:

  • 改进了包括入门、故障排除、CLI引用、管理传递依赖关系,以及其他一些的一些页面。
  • 由Algolia DocSearch托管的可搜索参考文档。
  • 一个重新格式化的PDF供离线查看。
  • 分类导航。
  • 文档版本选择。

更高效的内存执行

更高效的内存执行命令行参数等特性允许更好的开发工作流,同时降低内存需求和缓存清理可以减少Gradle在系统上的开销。

更低的内存要求

升级Gradle 5.0 不仅会使构建速度更快,而且还会大大减少内存的使用。许多缓存机制在Gradle 5.0中得到了优化,并且Gradle进程的默认最大内存大大减少。

Process Type Gradle 4.x default heap Gradle 5.0 default heap
Command-line client 1 GB 64 MB
Gradle Daemon 1 GB 512 MB
Worker processes 1/4 of physical memory 512 MB

阶段性缓存清理

现在,手动清理缓存的日子已经结束了,Gradle现在可以实现定期清理过期缓存。Gradle还更精确地跟踪陈旧的任务输出,并在不导致错误结果的情况下清理它们。

新的 Gradle 调用选项

测试

Gradle 5.0添加了对JUnit 5测试的支持:JUnit平台、JUnit Jupiter和JUnit Vintage。这将支持允许您启用测试分组和筛选,并包括定制的测试引擎。

test {
    useJUnitPlatform {
        excludeTags 'slow'
        includeEngines 'junit-vintage'
        failFast = true
    }
}

猜你喜欢

转载自blog.csdn.net/xiangzhihong8/article/details/84609827