您现在的位置是:首页 > 文章详情

Gradle 6.1 发布,项目自动化构建工具

日期:2020-01-19点击:451

Gradle 6.1 已发布,此版本支持可重定位的依赖项缓存,可配置 Java,Groovy 和 Scala 类之间的编译顺序,并启动了一组新的可下载示例。同时还修复了一些错误,为 Gradle 插件作者提供了方便等等。

具体更新内容如下:

Gradle 的依赖项缓存可以重定位

$GRADLE_HOME/caches/modules-2 现在可以将 Gradle 6.1 和更高版本缓存的依赖项重新定位到 Gradle Dependency 缓存下。如果已经下载了依赖项,则将其移至新位置或植入主机映像后,使用依赖项缓存的构建将不需要访问网络即可下载工件或元数据。

请注意,应使用相同的Gradle版本对缓存进行初始化和使用,以达到最佳效果。有关更多详细信息,请参见文档

Gradle 团队表示,这只是帮助使用临时 CI 代理的组织减少构建过程中下载依赖项的开销的第一步。

在Groovy,Scala和Java之间定义编译顺序

以前,Java,Groovy 和 Scala 编译之间的关系是在同一项目中使用显式任务依赖性进行硬编码的。Gradle 假定 Groovy 和 Scala 编译将始终依赖 Java 编译。也就是说,compileGroovy并且compileScala将直接取决于的输出compileJava

这些任务依赖项已使用目录属性进行了重塑。编译任务之间的关系在任务的类路径中表示。从类路径中删除目录属性也会删除相应的任务依赖项。这可用于更改 Java,Groovy 和 Scala 编译任务之间的关系。

例如,在以前,当在同一项目中组合 Groovy 和 Kotlin 时,就很难使 Kotlin 类依赖于 Groovy 类。

 tasks.named('compileGroovy') { // Groovy only needs the declared dependencies // and not the output of compileJava classpath = sourceSets.main.compileClasspath } tasks.named('compileKotlin') { // Kotlin also depends on the result of Groovy compilation // which automatically makes it depend of compileGroovy classpath += files(sourceSets.main.groovy.classesDirectory) } 

可下载的 Gradle 示例

除了教程和指南以及广泛的用户手册,Gradle 现在还提供了样本索引,以演示可以使用 Gradle 构建的各种项目,例如 Kotlin 或 Spring boot。这些样本还展示了可以使用 Groovy 或 Kotlin DSL 解决的常见问题,例如向 Java 项目添加集成测试。每个样本都捆绑了一个 Gradle 包装器,因此用户甚至无需尝试就可以安装 Gradle。

这些示例使用与文档相同的 Gradle 版本进行测试。随着时间的推移将添加更多样本。如果您对问题或用例有任何建议,认为可以作为一个很好的例子,请打开一个新的问题

使用 JDK8 + 对方法参数名称进行 Groovy 编译支持

Gradle 6.1 支持编译 Groovy 代码并包括方法参数名称

插件作者的改进

仅在查询值时确定属性值

在以前的 Gradle 版本中,某些 Gradle 类型(例如PropertyConfigurableFileCollection)提供了一种finalizeValue()方法,可以急切地计算属性的最终值并防止进一步的更改。

当任务开始运行时,Gradle 会自动完成这些类型的任务属性,以便任务操作和 Gradle 的构建缓存/最新检查可以看到相同的值。这也避免了多次计算属性值,这有时可能很昂贵。插件还可以finalizeValue()在查询值之前用于完成其他属性,例如项目扩展的属性。

在此版本中,这些类型获得了一种新finalizeValueOnRead()方法。此方法与相似finalizeValue(),不同之处在于最终值是在查询值而不是立即查询时计算的。如果属性值的计算成本可能很高,或者尚未配置该值以确保该属性的所有使用方从此点开始都能看到相同的最终值,则插件可以使用此方法。

请参阅用户手册以了解更多详细信息。

New managed property types

Gradle 5.5 引入了任务和其他类型托管属性的概念,其中 Gradle 为在任务,项目扩展或其他自定义类型上定义的抽象属性提供了getter和setter的实现。通过删除一堆样板,这简化了插件的实现。

在此版本中,任务或其他自定义类型可能具有type的抽象只读属性DomainObjectSet<T>

请参阅用户手册以了解更多详细信息。

New factory methods

ObjectFactory类型(插件和其他自定义类型用于创建各种有用类型的实例)具有多种新的工厂方法来创建某些 Gradle 类型,这些类型只能使用以前的版本中的内部API来创建:

请参阅用户手册以了解更多详细信息。

对 Gradle 工具提供商的改进

工具 API:TestLauncher可以运行特定的Test任务测试

TestLauncher通过指定测试类或方法的名称,Tooling API 中的接口已经可以启动测试。但是,如果有多个Test任务,则将Test执行所有任务。

对于 IDE,开发人员通常只希望一次只执行一个任务。Gradle 6.1 引入了新的 API,以Test使用withTaskAndTestClasses()withTaskAndTestMethods()方法对特定任务执行测试。

发布说明

下载地址

原文链接:https://www.oschina.net/news/112892/gradle-6-1-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章