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

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

States

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

  • Internal

  • Incubating

  • Public

  • Deprecated

Internal

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

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

Incubating

孵化状态下引入功能部件,以允许在功能部件公开之前将现实世界的反馈纳入功能部件并锁定以提供向后兼容性. 它还为愿意接受潜在的将来更改的用户提早使用该功能,以便他们可以立即使用它.

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

Features in incubation are clearly indicated to be so. In the source code, all methods/properties/classes that are incubating are annotated with Incubating, which is also used to specially mark them in the DSL and API references. If an incubating feature is discussed in this User Manual, it will be explicitly said to be in the incubating state.

Feature Preview API

功能预览API允许通过在设置文件中添加enableFeaturePreview('FEATURE')来激活某些孵化功能. 各个预览功能将在发行说明中宣布.

孵化功能被提升为公开功能或已被删除时,它们的功能预览标记将变得过时,无效且应将其从设置文件中删除.

Public

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

除非弃用,否则不会删除或有意更改公共功能. 所有公共功能均受向后兼容政策的约束.

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),并且该版本将不会收到任何新的错误修正或功能反向移植.