Gradle-7.0 发布
Gradle团队很兴奋地宣布一个新的主要版本的Gradle,7.0。
此版本支持默认情况下文件系统监视为了使您的增量构建更快,扩展了对用Java 16构建项目,并增加了对基于使用苹果硅处理器(如M1)的MAC电脑.
此版本还引入了的功能预览集中式依赖版本,启用构建验证错误使您的构建更加可靠,并且更容易为设置文件创建约定插件。许多孵化功能已被提升为稳定.
这些发行说明仅列出了自Gradle 6.8以来的新增内容。您还可以看到Gradle 6.0到7.0之间所有变化的亮点.
下载连接:点击进入快速下载
提高可靠性
Gradle采用了许多优化来确保构建尽可能快地执行。这些优化依赖于任务的输入和输出定义明确。Gradle已经对任务进行了一些验证,以检查它们是否定义良好。
禁用验证问题的优化
如果一个任务没有通过输入/输出验证,Gradle现在将在没有并行执行、最新检查和构建缓存的情况下执行它。有关更多信息,请参见运行时验证用户手册.
验证任务之间缺少的相关性
现在标记的一个潜在问题是,一个任务使用另一个任务产生的输出,而没有声明显式或推断的任务依赖性。Gradle现在检测消费者和生产者之间缺少的依赖关系,并在这种情况下发出警告。有关更多信息,请参见输入和输出验证用户手册.
依赖性管理改进
使用标准JVM和Android变体正确处理库
Java插件现在可以识别org.gradle.jvm.environment属性在依赖关系解析期间。
这使得图书馆,比如番石榴,以清楚地区分针对优化的变体standard-jvm和android。然后,Gradle会根据当前项目类型(Java或Android)自动选择最佳变体,
插件开发改进
支持多种版本的插件
Gradle 7寻找新的org . grad le . plugin . API-版本属性。这允许插件作者为不同的Gradle版本发布不同的插件变体。本用户手册部分描述新属性如何与一起使用特征变体向插件添加额外的变体。
默认情况下,插件还不发布具有该属性的元数据。
为本地插件使用包含的版本
开发插件作为复合构建的一部分,在惯例插件,到目前为止只可能用于项目插件(应用于build.gradle(.kts)文件)。设置插件(插件应用于settings.gradle(.kts)文件)总是必须孤立地开发并发布到二进制存储库中。
此版本在的设置文件中引入了新的DSL构造包括插件版本。像这样的构建可以提供项目和设置插件。
pluginManagement {
includeBuild("../my-settings-plugin")
}
plugins {
id("my.settings-plugin")
}
上面的例子假设包含的构建定义了一个id为my.settings-plugin.
通过包含的构建产生的库组件pluginManagement块不会自动对包含它的内部版本可见。然而,相同的构建可以被包括为插件构建和普通库构建:
pluginManagement {
// contributes plugins
includeBuild("../project-with-plugin-and-library")
}
// contributes libraries
includeBuild("../project-with-plugin-and-library")
这种区别反映了Gradle为存储库声明提供了什么——存储库是为插件依赖和产品依赖分别指定的。
安全咨询
此版本的Gradle包含对以下安全建议的修复:
- 通过系统临时目录的本地权限提升
- 存储库内容过滤器在设置插件管理中不起作用
- 通过临时目录权限的信息披露
提升的功能
升级功能是在Gradle的早期版本中酝酿的功能,但现在受到支持并具有向后兼容性。请参阅“用户手册”一节功能生命周期”了解更多信息。
Java模块支持
收集, 测试和执行Java模块现在是一个稳定的特性。
不再需要使用来激活功能java.modularity.inferModulePath.set(true).
依赖性验证
依赖性验证被提升为稳定功能。
Java工具链
Java工具链被提升为稳定功能。
更改守护进程的优先级
更改守护进程的优先级随着–priority现在是一个稳定的特性。
提升的API
在Gradle 7.0中,我们将下列类或方法移出了孵化阶段。