Gradle中扩展和额外属性之间的差异
根据,可以在运行时使用其他对象扩展Gradle中扩展和额外属性之间的差异,gradle,Gradle,根据,可以在运行时使用其他对象扩展ExtensionAware对象 所以我们可以创造 // Add new extensions via the extension container project.extensions.create('custom', String, "bar") 然后可以访问它作为 project.custom == "bar" 然后,我们有了一个允许将新属性添加到现有对象的方法 project.ext.custom = "bar" 或者干脆 project.cus
ExtensionAware
对象
所以我们可以创造
// Add new extensions via the extension container
project.extensions.create('custom', String, "bar")
然后可以访问它作为
project.custom == "bar"
然后,我们有了一个允许将新属性添加到现有对象的方法
project.ext.custom = "bar"
或者干脆
project.custom = "bar"
从可用性的角度来看,两者似乎没有区别
我知道ext
是一个特殊的扩展,搜索属性的范围与其他扩展不同,但两者之间的实际区别是什么?简单扩展和ext提供相同的功能吗?一般来说,扩展和额外属性都有相同的用途,因为它们都有助于扩展Gradle DSL中各种元素的范围,主要是项目
对象。介绍了这些功能,并进行了以下说明:
- 项目的额外属性。每个项目都维护一个额外属性的映射,这些属性可以包含任意名称->值对。一旦定义,此作用域的属性将是可读写的。有关详细信息,请参见额外属性
- 插件添加到项目中的扩展。每个扩展名都是只读的,与扩展名同名
“每个扩展都可以作为只读属性使用”是我缺少的一点。我想知道为什么Gradle文档中没有提到这一点,而是API文档中提到了这一点。谢谢你的回答。