Gradle 6.6 RC6 发布,引入配置缓存特性,大幅提升构建性能
Gradle 6.6 RC6 发布了。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。
此版本最大亮点是引入了一个实验性选项:配置缓存(Configuration caching),它是一个主要的性能优化特性,可以使 Gradle 跳过构建的配置阶段,并尽快开始执行任务。
配置缓存
在运行任何任务之前,Gradle 需要运行配置阶段。当前,这是在每次构建调用时完成的,并且会产生大量的开销,尤其是在大型项目中。
配置缓存通过缓存配置阶段的结果并将其重新用于后续构建,从而可以显著提高构建性能。使用配置缓存,Gradle 可以在不影响构建配置的任何内容发生变化的情况下完全跳过配置阶段,如下所示:
此外,启用配置缓存后,Gradle 能够优化任务执行,并默认情况下并行执行更多任务。
目前该特性处于高度试验阶段,默认情况下不启用或建议用于生产环境。可以通过--configuration-cache
在命令行上提供参数或将其添加到运行配置中来启用此实验特性。
标准化的运行时类路径改善缓存命中率
对于最新检查和构建缓存,Gradle 需要确定两个任务输入属性是否具有相同的值。为此,Gradle 首先将两个输入标准化,然后比较结果。
现在,运行时类路径分析将检查清单META-INF
文件和属性文件,而忽略对注释、空格和顺序差异的更改。此外还可以有选择地忽略不影响运行时类路径的属性。
normalization { runtimeClasspath { metaInf { ignoreAttribute("Implementation-Version") ignoreProperty("timestamp") } } }
类路径上的任何 ZIP 文件被重新生成并且仅因不重要的值或注释而不同的情况下,将提高生成高速缓存命中的可能性。这种规范化最有用的最常见情况是 JAR 文件,不过它也可以被应用于类路径上的任何 ZIP 文件,例如 AAR、WAR 和 APK 文件。
处理用户提供的凭证
构建有时会要求用户提供凭据,例如,为了发布工件,可能需要凭证才能与工件存储库进行身份验证。将凭据保留在构建脚本之外是一个好习惯。
此版本提供了用于凭证的新 API,该凭证通过建立约定以使用 Gradle 属性提供凭证来简化凭证的使用,Gradle 属性可以作为命令行参数、环境变量或gradle.properties
文件中的值提供给构建环境。当 Gradle 知道某个时候该版本将需要凭证并且凭证已丢失时,它还会执行“快速失效”。
从此版本开始,可以轻松地将用于身份验证的凭证外部化到工件存储库:
repositories { maven { name = 'mySecureRepository' credentials(PasswordCredentials) // url = uri(<<some repository url>>) } }
mySecureRepository
将在 Gradle 属性中搜索名称为mySecureRepositoryUsername
和mySecureRepositoryPassword
的凭据。
同时还可以直接使用新的 provider API 向外部工具提供凭据:
tasks.register('login', Exec) { def loginProvider = providers.credentials(PasswordCredentials, 'login') inputs.property('credentials', loginProvider) doFirst { PasswordCredentials loginCredentials = loginProvider.get() // use credentials } }
上面的凭据将在 Gradle 属性中使用名称loginUsername
和loginPassword
进行搜索。
此外,此版本还有其它改进,包括对 Java 编译 --release 标志的支持、文件系统监视的稳定性改进、依赖管理的改进,以及 bug 修复等,详情查看更新说明:https://docs.gradle.org/6.6-rc-6/release-notes.html

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
GitLab 发布安全补丁版本 13.2.3、13.1.6 和 13.0.12
GitLab 发布了 13.2.3、13.1.6 和 13.0.12,这是几个安全补丁版本。 安全问题包括: CVE-2020-10977:在项目之间移动 issue 时,GitLab EE/CE 8.5-12.9 容易受到路径遍历的影响。 CVE-2020-13280:与发送给已删除组成员的邀请电子邮件有关的过多错误日志记录可能会导致资源较少的计算机上的内存耗尽。影响所有此前的 GitLab 版本。 CVE-2020-13281:在解压缩数据之前,项目导入功能未执行大小检查,可能导致拒绝服务。影响 GitLab 8.9 及更高版本。 CVE-2020-13286:通过 URL 导入存储库时,http.<url>.proxy可以更改 git设置并导致 SSRF。影响 GitLab 12.7 及更高版本。 CVE-2020-13285:对于某些浏览器,issue reference的工具提示可能会导致鼠标悬停处发生存储型 XSS。影响 GitLab EE 12.9 及更高版本。 CVE-2020-13283:在特定条件下在 issue 列表上查看时,里程碑标题字段可能会导致存...
- 下一篇
每日一博 | 金融科技的碎片化思考(上)
从事金融科技行业已久,也一直想写写金融科技相关的文字,又惶恐间,深觉如此大的话题hold不住而贻笑大方。偶然翻开束之高阁多年的《蚂蚁金服-从支付宝到新金融生态圈》,惊喜之余亦将自己碎片化的那点浅识愚见串联起不少。行文仓促,些许是经历,些许是总结,些许是念头,唯恐扭头就忘,权当流水记账给自己看也好。 又不是何样大家,可以著书警示世人,无须给自己压力,写到哪儿便是哪儿吧,看官您也担待一二。 金融是什么?科技是什么?合到一起的金融科技又是什么?让我们剥开浮躁的表面直指内心。 科技是第一生产力 先说科技,也就是科学技术,是第一生产力。科学是理论,技术是应用。作为生产力,科技理论上可以应用于人类已知或者未知的所有领域,而金融领域不过是科技可应用的领域之一而已。当然可不仅仅限用“应用”,还可以“驱动”“赋能”“普惠”“整合”“协同”、“数字化”“互联网化”“智能化”“生态化”、以及“金融3.0”“VUCA4.0”“工业5.0”“通证经济”“数字经济”“ABCD”等等 (金融科技领域不会用词,OUT一半!)。 对于大国来说,军事和金融是两个最最核心的支撑力量。而通常来说,最尖端的科技也是始于这两个领...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Mario游戏-低调大师作品
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果