Gradle 5.0 更新介绍

2019-07-02 10:51:03 浏览数 (1)

版权声明:本文为博主原创文章,转载请注明出处。 https://cloud.tencent.com/developer/article/1454280

Gradle 5.0正式版出来有几天了,这个工具的发展速度还真是惊人。前些天我看到gradle 5 rc版的时候还在想正式版什么时候出,没想到rc版没过几天正式版就出来了。那么正好,就来介绍一下gradle 5.0正式版加入的一些新功能吧。

依赖版本对齐

项目中引用的第三方包多了,难免出现引入了同一个包的不同版本,导致冲突的情况发生。依赖版本对齐这个功能就是为了解决这种情况而出现的。如果要对齐依赖版本,首先需要一个逻辑组(platform),platform规定了要使用的依赖版本,它可以是我们声明的依赖版本,也可以是由其他地方导入的BOM文件。在遇到了不同版本的情况下,都会对齐到platform中规定的版本上。

下面是官方文档的例子:

代码语言:javascript复制
dependencies {
    // 导入了BOM文件, 会覆盖其他地方声明的版本
    implementation(enforcedPlatform("org.springframework.boot:spring-boot-dependencies:1.5.8.RELEASE"))

     // define dependencies without versions
    implementation("com.google.code.gson:gson")
    implementation("dom4j:dom4j")

     // 这里的版本会被对齐到BOM中声明的版本
    implementation("org.codehaus.groovy:groovy:1.8.6")
}

Kotlin DSL 1.0

Gradle官方很早就开始开发基于Kotlin的DSL了,在Gradle 5.0中Kotlin DSL正式版终于现身了,这意味着我们可以在生产项目中使用Kotlin DSL了。和默认的Groovy DSL相比,由于Kotlin DSL是静态的,所以可以提供更多的代码补全、提示、语法高亮等支持。

如果想要使用Kotlin DSL,但是还是不太熟悉Kotlin DSL的语法也没有关系,Gradle官方早就写了一大堆示例项目,相信你看完以后肯定就了解如何使用了。连接在这里。

Gradle构建初始化功能

gradle init任务现在增加了一些很实用的功能:

  • 交互模式,初始化的时候可以在交互模式中输入信息;
  • Kotlin类库和程序,现在可以在初始化的时候生成Kotlin类库和程序类型;
  • 用推荐的配置生成构建,init任务现在会使用implementationtestImplementationtestRuntimeOnly配置来代替原来的compiletestCompiletestRuntime
  • 配置项目和代码包名,现在init任务提供了参数来设置项目和源代码的包名;
  • 创建资源文件夹,现在init任务还会创建空的resource文件夹;
  • 创建.gitignore文件。

可搜索的文档

这个改进属于官方文档的改进,现在官方文档基于Algolia添加了搜索框,可以搜索你想要的内容。

任务超时

现在任务可以指定一个超时值,当执行时间超过的时候会停止。

解析依赖时的HTTP重试

现在当Gradle通过HTTP访问远程仓库的时候,如果失败,会在拉黑这个仓库之前重试。

性能改进

以低优先级进程方式启动

现在Gradle可以使用--priority low命令行参数或者org.gradle.priority=low属性作为低优先级进程启动,这可以保证IDE和终端即使在繁重的任务时始终处于可响应状态。

还有一些性能改动,感兴趣可以参考官方文档。

Java 11支持

现在可以使用Java 11来运行Gradle。

这个功能其实也挺重要的,之前在升级到Java 11的时候我发现一些Gradle构建失败了,现在可以正常运行它们了。

提升的功能

之前很多功能都处于测试和开发状态,现在它们作为正式特性出现在Gradle中了。官方文档有一个很长的列表,这里只简单列出一部分:

  • 之前在4.0中提升的特性
  • 并行任务执行
  • 持续构建
  • 组合构建
  • java-gradle-plugin插件
  • distribution插件
  • jacoco插件

更新日志还有很多地方我没有介绍,有兴趣的可以查看官方文档。

0 人点赞