可以定义子项目不继承的gradle扩展属性吗?

时间:2017-05-18 15:33:21

标签: gradle

我想在多项目构建中使用allprojects / afterEvaluate,以根据已设置的属性对每个项目执行某些操作。有没有办法以子项目未继承的方式为每个项目设置属性?

如果我只关心叶项目,那么

ext.myProp就可以了。但是如果父母也需要设置该属性,我找不到区分它所设置的项目的方法。多项目guide解释了属性(不情愿地)继承。

这种机制让我想起JavaScript中的原型继承。 gradle是否有hasOwnProperty等价物?

1 个答案:

答案 0 :(得分:0)

我挖了一些,发现虽然没有通用的方法来隔离项目属性的several delegated scopes来自哪个,如果你专门寻找ext属性,那么一个has方法,您可以检查未委托的特定项目的ext容器(至少不在hasProperty范围内)。

如果已直接为该项目分配了值,那么proj.ext.has('myProp')将为真。

一个重要的警告是,通过-Pgradle.properties设置的属性似乎会自动复制到所有项目的扩展容器中,我认为没有办法区分它。

,扩展或任务属性可能更容易被隔离,因为它们不是继承的,但它们不是特别的。