Gradle 5.0 正式版本发布,一大波新特性来袭

  • 时间:
  • 浏览:4

怎样迁移你的构建语言到 Kotlin DSL 上,能够参考我的另一篇文章Gradle指南之从Groovy迁移到Kotlin

累似 超时设置简直太有用了有木有。很重是当你刚刚累似 网络原因分析分析,原因分析分析你的 build task 总是卡在那里的刚刚,你的心里一定是万马奔腾的感觉,赶紧用起来吧,无须再浪费有有哪些无用的时间了。示例:

 ●  变快的构建波特率 ●  细粒度的传递依赖管理 ●  更高效的内存执行等等。 ●  ……

让让我们歌词 歌词 赶紧来看一下有有哪些令人激动的新型态。

 ●  jackson-annotation 版本 2.9.0 -> 2.9.5

还2个多比较方便的地方,若果通过 platform,让我们歌词 歌词 能够直接省略该 module 的版本号(从此告别通过定义版本变量去维护众多 module 的版本信息),如下所示:

Gradle 5.0 版本真的是干货满满,尤其是对于使用 Gradle 构建的 Android 刚刚 Java 开发者来说,像 Kotlin DSL(构建语言)、Dependency version alignment(依赖版本一致性)、Performance features(性能提升) 等等有有哪些型态还是很让我期待的。有兴趣的小伙伴能够赶紧更新一波了。

通常,针对累似 有哪些的问题报告 ,刚刚的做法刚刚若果简单粗暴的强指定版本号,不过,现在有了更加优雅的方式去帮助让我们歌词 歌词 去管理版本,即 Dependency version alignment,让我们歌词 歌词 能够通过指定2个多 platform 去管理某一组的 module

累似 概念不言而喻不好理解,我累似 人也是花了累似 时间去理解和消化。还是通过2个多示例来说明吧。刚刚有英文水平高刚刚理解能力比较强的同学,欢迎指教。

当你在控制台执行 init task 后,Gradle 刚刚提供更多的构建信息提示,来帮助你生成 Gradle 模版项目。

5.0 版本共计修复了 166 个 issues(惊人),当然,伴随而来的还有累似 已知的 issues ,全版能够点击这里 5.0 release-notes。

Gradle Native project 持续的改善和提升 native 生态系统, 更多细节:Changes included in Gradle 5.0

 ●  jackson-annotation 版本 2.9.0 (jackson-databind 2.8.9 版本间接依赖 jackson-annotation 2.9.0 版本,注意这里,刚刚里边的依赖仲裁,变成了被高版本 的 jackson-databind 2.9.5 所依赖)

 ●  --package 选项能够帮助你调整生成的项目包名

在历经了一年多时间, 20 个 4.x 系列版本的迭代后,Gradle 官方终于在 11月26日 发布了 5.0 的正式版本,先放入一张官方各版本 Gradle 性能对比图



Dependency version alignment allows different modules belonging to the same logical group (a platform) to have identical versions in a dependency graph.

 ●  Error Highlighting:错误高亮 ●  Quick Documentation:文档快速提示

 ●  Refactoring:代码重构

早在 Gradle 4.x 版本中就刚刚支持了通过使用 Koltin DSL 的方式去编写构建脚本,刚刚当时刚出来,全都地方支持的还不太好(需用踩坑),全都无须推荐让我们歌词 歌词 迁移过去,若果尝鲜为主。现在 Kotlin DSL 1.0 release 版本出来后,原因分析分析接下来让我放心的迁移刚刚使用 Kotlin DSL 啦。新版本做了全都优化和改进的地方,比如:

init task 会创建2个多空的 resource 目录

 ●  jackson-core 版本 2.9.5(依赖传递)

dependencies {    // a dependency on Jackson Databind    implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.9'    // and a dependency on vert.x    implementation 'io.vertx:vertx-core:3.5.3' } 克隆好友代码

dependencies {    // Forcefully downgrade the Jackson platform to 2.8.9    implementation enforcedPlatform('com.fasterxml.jackson:jackson-platform:2.8.9') } 克隆好友代码

 ●  jackson-databind 版本 2.8.9 -> 2.9.5(低版本通过依赖仲裁变为高版本)

task hangingTask() {    doLast {        Thread.sleep(200000)    }    timeout = Duration.ofMillis(2000) } 克隆好友代码

 ●  jackson-databind 版本 2.8.9 -> 2.9.5

刚刚应用该规则:

累似 版本为插件和自定义 task 提供了创建 SourceDirectorySet 的 API、提高 Provider 的 API、和构建缓存的兼容性提高。

当然,还有更方便查找类和方式的 Gradle API Javadocs。

HTTP 访问重试功能,嗯。挺好

Gradle 5.0 版本构建支持 Java 11 版本

init task 能够通过 kotlin-library 刚刚 kotlin-application 类型来设置生成2个多 Kotlin 的类库刚刚应用。你只需用根据它的提示来操作即可。

累似 现有功能的提升,全版点击这里

 

比如,让我们歌词 歌词  build.gradle 有以下依赖:

最后,在执行完 ./gradlew app:dependencies 命令后,让我发现当匹配上 com.fasterxml.jackson 组的 module 的版本都保持了一致,也若果



怎样升级到 Gradle 5.0 版本呢,很简单,以下某种方式任选其一

另外,platform 同样也提供了强制为一组 module 指定某个版本号,比如:

通过以上的分析,让我们歌词 歌词 发现实际上解挥发掉来的依赖库版本跳出了和预期不一致的情況,而累似 累似 情況很容易会原因分析分析累似 未知有哪些的问题报告 ,尤其是在累似 不兼容老版本接口的依赖库里就会直接原因分析分析 Crash。

 distributionBase=GRADLE_USER_HOME  distributionPath=wrapper/dists  distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip  zipStoreBase=GRADLE_USER_HOME  zipStorePath=wrapper/dists 克隆好友代码

 ●  --project-name 选项能够帮助你调整生成的项目名称

根据官网的介绍,直译过来的意思是:依赖版本一致性允许属于相同的逻辑组(平台)的不同module 拥有相同的版本依赖图。

简单看了下介绍,能够帮助你查看代码覆盖率的 JaCoCo 插件,感兴趣的同学能够点这里了解更多

class JacksonAlignmentRule implements ComponentMetadataRule {    void execute(ComponentMetadataContext ctx) {        ctx.details.with {            if (id.group.startsWith("com.fasterxml.jackson")) {                // declare that Jackson modules all belong to the Jackson virtual platform                belongsTo("com.fasterxml.jackson:jackson-platform:${id.version}")            }        }    } } 克隆好友代码

init task 生成的构建脚本将推荐使用新的 implementationtestImplementationtestRuntimeOnly 去代替 compiletestCompiletestRuntime

 ●  jackson-core 版本 2.9.5



dependencies {    // import a BOM. The versions used in this file will override any other version found in the graph    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")     // this version will be overriden by the one found in the BOM    implementation("org.codehaus.groovy:groovy:1.8.6") } 克隆好友代码

新版本对 gradle init 方式进行了升级,通过更多的型态和交互,来帮助让我们歌词 歌词 去快速初始化2个多 Gradle 项目。简单来说话语,若果加强版的脚手架。

刚刚 vertx-core 也间接依赖了 jackson-core,通过依赖传递,当解析依赖信息的刚刚,让我们歌词 歌词 实际依赖的版本号是:

 ●  Dependency version alignment ●  Gradle build initialization features ●  Searchable documentation ●  Task timeouts ●  HTTP retries during dependency resolution ●  Java 11 runtime support ●  Plugin authoring features ●  Gradle Native features ●  Promoted features

我擦,感觉一脸懵逼,没关系,下面我会针对有有哪些型态做些简要的总结和说明,内容刚刚比较多,刚刚干货满满,建议耐心阅读下去。

Gradle 的文档搜索功能回来了(不言而喻我总是不知道累似 功能在哪里),总之,能够更加方便的搜索用户手册和 DSL 的描述。

dependencies {    components.all(JacksonAlignmentRule) } 克隆好友代码

通过 --priority low 命令参数刚刚 org.gradle.priority=low 属性设置能够让我的 Gradle 以2个多低优先级的线程运行运行启动,至于好处嘛,当然有你在身边一边在 building 的刚刚,一边听音乐的刚刚,再若果会感觉一卡一卡的了

回到刚才的场景示例中,让我们歌词 歌词 在 build.gradle 能够否定义 jackson 为一组的 module 版本的规则,如下所示:

init task 会生成2个多简单的 .gitignore 文件来帮助你设置你的 Git repository 。