标签:目的 失败 rbo 导入 通过 部分 jvm oid web app
史上最快、最强大的Gradle 5.0发布,新特性全解图片
来源|Gradle 博客
译者|无明
Gradle 5.0 是有史以来速度最快、最安全、最强大的 Gradle 版本,这是 Gradle 官方给出的评价,v5.0 新增的功能主要包括:
构建速度慢其实是对金钱的浪费。使用 Gradle 5.0 新的构建缓存和增量处理功能来构建你所需的内容,可以为开发人员和业务主管剩下很多时间。
升级到 Gradle 5.0 后,你的构建将立即变快,并且你可以通过使用和配置其他功能来进一步提高性能。
图片
构建缓存
通过重用先前执行的结果来避免重复工作让 Gradle 变得更快。Gradle 4.0 引入了构建缓存,目的是重用之前的调用输出。
今天,Android、Kotlin、C++、Scala 和很多其他插件使用了任务缓存,因此可以在不同的机器上重用。有效使用构建缓存可以将构建时间减少高达 90%。
此外,Gradle 5.0 中的构建缓存也被用在更多的场景中,例如当一个任务声明了 @OutputDirectories 或 @OutputFiles 的集合时。
https://gradle.org/images/whats-new/gradle-4.5-assemble-cache.webm
增量 Java 编译
在 Gradle 5.0 中,增量编译器经过高度优化,并成为默认的编译器。
除了第一次的构建,CompileJava 任务不需要重新编译所有源文件。
增量注解处理
Gradle 5.0 的增量编译器支持增量注解处理,这是一项重要的创新,因为越来越多的项目依赖于注解处理器。
要使用增量注解处理,需要升级到受支持的注解处理器版本。你可以通过 --info 日志记录或这个表格(https://github.com/gradle/gradle/issues/5277)来查看给定的注解处理器是否支持增量。
新的 annotationProcessor 配置可以用于管理注解处理器,并将它们放在注解处理器路径中。
构建扫描
新的性能提升、依赖关系管理、日志和弃用 API 使用检查让构建扫描得到了显著改善。只需要在命令行执行 Gradle 时添加 --scan,或者应用并配置构建扫描插件(https://guides.gradle.org/creating-build-scans/)。
Gradle 5.0 提供了一些新功能用于自定义如何选择依赖项,并改进了对 POM 和 BOM 的支持:
现在可以使用 Kotlin 编写 Gradle 构建脚本。此外,gradle init 支持更多的项目类型和交互性。
Kotlin DSL提供了IDE辅助
到 Gradle 5.0 为止,Kotlin DSL 1.0 已经为投入生产使用做好了准备。Kotlin 的静态类型为 IDE 提供了更好的辅助,包括构建脚本的调试和重构、自动完成以及你期望的其他所有内容。
如果你有兴趣使用 Kotlin 编写你的构建版本,请从 Gradle Kotlin DSL Primer(https://docs.gradle.org/5.0/userguide/kotlin_dsl.html)开始。
图片
交互式 gradle init
想要创建新 Gradle 构建的用户现在可以选择其他项目类型:kotlin-library 和 kotlin-application。此外,你可以选择生成 Groovy 或 Kotlin DSL 构建脚本,并自定义项目名称和包。最后,新的交互式 UI 改进了用户体验。
https://gradle.org/images/whats-new/interactive-init.webm
更多面向用例的文档
Gradle 文档和入门指南提供了更多信息和更好的访问性:
几个新改进的页面,包括:入门、故障诊断、CLI 参考、管理传递性依赖以及其他几个;
图片
更高效的内存利用
用于测试的 --fail-fast 和 JVM 应用程序的命令行参数等功能有助于改善开发流程,而更低的内存要求和缓存清理减少了 Gradle 的系统开销。
降低内存使用量
在升级之后,你的构建不仅会更快,而且还会使用更少的内存。很多缓存机制已在 Gradle 5.0 中得到了优化,因此 Gradle 进程的默认最大内存已大大减少。
图片
手动清理数十亿字节的旧 Gradle 缓存的日子已经结束了。Gradle 现在可以定期清理过时的缓存。Gradle 还可以更精确地跟踪过时的任务输出,并在不清理可能会导致错误结果的情况下清除它们。
测试
Gradle 5.0 支持 JUnit 5 的 JUnit Platform、JUnit Jupiter 和 JUnit Vintage,允许你启用测试分组和筛选,以及包含自定义测试引擎。
图片
图片
你可以使用 --fail-fast 标志启用更快的红绿循环,Gradle 5.0 默认情况下首先执行失败的测试。
日志记录
在 Gradle 5.0 中,日志消息按照任务进行分组。
除了显示正在执行哪些测试之外,Gradle 丰富的命令行控制台还会显示彩色的构建状态信息,可以一目了然地告诉你是否有任何构建失败。你还可以通过“verbose”控制台模式要求 Gradle 在执行任务时记录任务。
最后,可以通过配置 warning-mode 来汇总、关闭或扩展 Gradle 警告日志。
图片
复合构建
复合构建允许你包含其他独立项目,这样你就可以同时开发应用程序和它依赖的库。
你现在可以使用构建扫描来检查复合构建。复合构建也兼容 --continuous。
它们默认进行并行构建,也可以嵌套。
JVM 应用程序的命令行参数
在使用 Gradle 5.0 是,可以更轻松地通过自定义参数运行 Java 应用程序,因为你可以在命令行或 IDE 上使用 --args。
Gradle 5.0 提供了很多新的 API,可实现更快、更通用的构建逻辑。
性能 API
新的 Worker API 支持更安全的并行和异步执行。
图片
改进的任务 I/O
正确地声明输入和输出对于增量构建和构建缓存行为来说是至关重要的。Gradle 5.0 强制执行更严格的约束,并为输入和输出声明引入了新的 API。
图片
Configuration Avoidance API
有些项目会创建大量的任务。如果只需要执行其中一些任务,就没有必要配置所有的任务。于是 Gradle 5.0 提供了 Configuration Avoidance API。通过在自定义任务中使用这个 API,大型项目可以节省高达 10%的配置时间。
图片
发布 API
为了改进 Maven 和 Ivy 存储库的发布,Gradle 5.0 引入了新的 API:
Maven Publish 和 Ivy Publish 插件提供了类型安全的 DSL,用于自定义作为发布一部分而生成的 POM 或 Ivy 模块。
任务超时
现在可以指定任务的超时持续时间,也就是多久之后会被中断。
自定义 CLI 参数
Gradle 5.0 提供了允许用户配置自定义任务的新方法。
首先,你可以使用 @Option 创建自定义命令行选项。用户通过执行 gradle help --task your-task 来获得这些自定义选项:
public class UrlVerify extends DefaultTask {
private String url;
@Option(option = "url", description = "Configures the URL to be verified.")
public void setUrl(String url) {
this.url = url;
}
@Input
public String getUrl() {
return url;
}
@TaskAction
public void verify() {
getLogger().quiet("Verifying URL ‘{}‘", url);
// verify URL by making a HTTP call
}
}
自定义嵌套 DSL
为任务提供自定义嵌套 DSL。Gradle 5.0 为嵌套的 DSL 元素提供了一等 API,让你可以更灵活地为用户设计配置任务的方式。
我们提供了一个文档(https://docs.gradle.org/5.0/userguide/upgrading_version_4.html)来帮助你从 Gradle 4.x 升级到 Gradle 5.0。在升级之前,我们建议你:
使用 Gradle 包装器升级到 Gradle 4.10.2:gradle wrapper --gradle-version = 4.10.2。
运行 gradle help --scan 列出已弃用的 Gradle API 以及使用了这些 API 的地方(包括插件)。
更新 Gradle 插件,尤其是构建扫描报告中列出的已启用的插件。
升级到运行 Gradle 5.0 所需的 JDK 8 或更高版本。
如果你遇到问题,请参阅故障排除指南(https://docs.gradle.org/5.0/userguide/troubleshooting.html#troubleshooting)或访问社区论坛(https://discuss.gradle.org/)。
英文原文:
https://gradle.org/whats-new/gradle-5/
活动推荐
12 月 7 日北京 ArchSummit 全球架构师峰会上,来自美团、百度、阿里、快手的讲师齐聚一堂,共同分享“打造 Native 体验 Hybrid App 实践”、“定制统一可维护的前端架构”、“10 年双十一前端关键技术”和“同构 Web App 的另一种探索”的分享。
会议开幕倒数第 7 天,购票联系票务灰灰 17326843116
详情可扫描以下二维码或点击阅读原文。
标签:目的 失败 rbo 导入 通过 部分 jvm oid web app
原文地址:https://blog.51cto.com/15057848/2568126