Gradle 6.6 发布,引入配置缓存特性,大幅提升构建性能

Gradle 6.6 发布了。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 属性中搜索名称为mySecureRepositoryUsernamemySecureRepositoryPassword的凭据。

同时还可以直接使用新的 provider API 向外部工具提供凭据:

tasks.register('login', Exec) {
    def loginProvider = 
        providers.credentials(PasswordCredentials, 'login')
    inputs.property('credentials', loginProvider)
    doFirst {
       PasswordCredentials loginCredentials = loginProvider.get()
       // use credentials
    }
}

上面的凭据将在 Gradle 属性中使用名称loginUsernameloginPassword进行搜索。

此外,此版本还有其它改进,包括对 Java 编译 --release 标志的支持、文件系统监视的稳定性改进、依赖管理的改进,以及 bug 修复等,详情查看更新说明:https://docs.gradle.org/6.6/release-notes.html

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/117987/gradle-6-6-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。