Gradle不断发展和完善. 如寿命终止支持部分所述,定期并频繁(大约每6周)提供新版本. 持续的改进与频繁的交付相结合,可以使用户及早获得新功能,并将宝贵的现实反馈反馈到开发过程中. 定期将新功能交付用户手中是Gradle平台的核心价值. 同时,API和功能稳定性非常受重视,也被视为Gradle平台的核心价值. 这是通过设计选择和自动测试被设计到开发过程中的东西,并由向后兼容性部分正式化.

Gradle 功能生命周期旨在满足这些目标. 它还可以向Gradle用户清楚地传达功能的状态. 术语功能在此上下文中通常表示API或DSL方法或属性,但不限于此定义. 命令行参数和执行模式(例如Build Daemon)是其他类型功能的两个示例.

States

功能可以处于以下四种状态之一:

  • Internal

  • Incubating

  • Public

  • Deprecated

Internal

内部功能不是为公共使用而设计的,仅供Gradle本身使用. 它们可以在任何时间点以任何方式进行更改,恕不另行通知. 因此,我们建议避免使用此类功能. 内部功能未记录. 如果它出现在本用户手册,DSL参考或API参考文档中,则该功能不是内部的.

内部特征可能演变为公共特征.

Incubating

特点是在培养国家出台允许真实世界的反馈被纳入该功能是由前公共和锁定向后兼容性提供. 它还为愿意接受潜在的将来更改的用户提早使用该功能,以便他们可以立即使用它.

处于孵化状态的功能可能会在将来的Gradle版本中更改,直到不再孵化为止. Gradle版本的孵化功能更改将在该版本的发行说明中突出显示. 新功能的潜伏期取决于功能的范围,复杂性和性质.

孵化中的特征清楚地表明是这样的. 在源代码中,所有正在孵化的方法/属性/类都用Incubating注释,该孵化还用于在DSL和API参考中对其进行特殊标记. 如果在本用户手册中讨论了培养功能,则将其明确表示为处于培养状态.

Public

非内部功能部件的默认状态为public . 用户手册,DSL参考或API参考中未明确说明正在孵化或已弃用的任何文档均被视为公开. 据说功能已从孵化状态向公众推广 . 每个发行版的发行说明都指出该发行版正在提升哪些以前的孵化功能.

A public feature will never be removed or intentionally changed without undergoing deprecation. All public features are subject to the backwards compatibility policy.

Deprecated

由于Gradle的自然演变,某些功能将被取代或不相关. 不推荐使用的功能最终将从Gradle中删除. 不推荐使用的功能永远不会更改,直到根据向后兼容性策略将其最终删除为止.

明确指示已弃用的功能是如此. 在源代码中,所有不建议使用的方法/属性/类都用" @java.lang.Deprecated "注释,这反映在DSL和API参考中. 在大多数情况下,可以使用不推荐使用的元素进行替换,这将在文档中进行描述. 使用不推荐使用的功能还将在Gradle的输出中导致运行时警告.

应避免使用已过时的功能. 每个版本的发行说明都指出了该版本不建议使用的所有功能.

Backwards Compatibility Policy

Gradle提供跨主要版本(例如1.x2.x等)的向后兼容性. 一旦在Gradle版本中引入或提升了公共功能,它将无限期保留或直至弃用. 一旦不推荐使用,则可以在下一个主要版本中将其删除. 主要版本可能支持不推荐使用的功能,但不能保证.

Release end-of-life Policy

每天,都会创建一个新的Gradle每晚版本. 这包含了当天通过Gradle广泛的连续集成测试进行的所有更改. 并非每天晚上都可能包含新变化,并且并非每天晚上都可能保持稳定.

对于每个次要版本或主要版本,Gradle团队都会创建一个预发行版本,称为发行候选(RC). 如果在短时间内(通常是一周)没有发现问题,则将候选发布版本升级为最终/一般可用性(GA)版本. 如果在候选版本中找到了回归,则将创建新的RC分布,并重复该过程. 只要发布窗口处于打开状态,就支持候选发布,但它们不打算长期用于生产. 在RC阶段,非常感谢Bug报告.

在最终版本发布之后,由于重要的错误修正或回归,Gradle团队可能会创建其他补丁版本,以替换先前的最终版本. 例如,Gradle 5.2.1取代了Gradle 5.2版本. 候选版本发布后,所有功能开发都将移至下一个版本. 这样,每个Gradle版本都会导致以前的版本成为行尾(EOL),并且该版本将不会收到任何新的错误修正或功能反向移植.