我想在多项目构建中使用allprojects / afterEvaluate,以根据已设置的属性对每个项目执行某些操作。有没有办法以子项目未继承的方式为每个项目设置属性?
如果我只关心叶项目,那么ext.myProp就可以了。但是如果父母也需要设置该属性,我找不到区分它所设置的项目的方法。多项目guide解释了属性(不情愿地)继承。
这种机制让我想起JavaScript中的原型继承。 gradle是否有hasOwnProperty等价物?
答案 0 :(得分:0)
我挖了一些,发现虽然没有通用的方法来隔离项目属性的several delegated scopes来自哪个,如果你专门寻找ext
属性,那么一个has方法,您可以检查未委托的特定项目的ext容器(至少不在hasProperty
范围内)。
如果已直接为该项目分配了值,那么proj.ext.has('myProp')
将为真。
一个重要的警告是,通过-P
或gradle.properties
设置的属性似乎会自动复制到所有项目的扩展容器中,我认为没有办法区分它。