如何在Gradle文件间继承配置并仅覆写sourceSets,无需复制全部定义
如何在Gradle文件间仅覆写sourceSets而不复制所有定义
要实现build-baz.gradle继承build-bar.gradle的所有配置,仅覆写sourceSets,可以按以下步骤操作:
1. 导入基础配置
在build-baz.gradle开头先引入build-bar.gradle的全部内容,这样就能继承其中的Groovy函数和其他构建设置:
// build-baz.gradle apply from: './build-bar.gradle'
2. 覆写sourceSets规则
注意:直接重新定义exclude会和原有规则累加(同时排除两个Application文件),所以需要先清空原有规则,再设置新的:
sourceSets { main { java { // 清除build-bar中设置的exclude规则 exclude.clear() // 设置Baz应用专属的exclude规则 exclude 'com/foo/BazApplication.java' } } }
完整的build-baz.gradle代码
apply from: './build-bar.gradle' sourceSets { main { java { exclude.clear() exclude 'com/foo/BazApplication.java' } } }
原理说明
apply from是Gradle实现脚本复用的标准方式,能把build-bar的所有配置完整继承过来;exclude.clear()是关键:如果跳过这一步,Gradle会自动合并新旧exclude规则,导致同时排除两个Application文件,不符合仅覆写的需求;- 重新设置
exclude后,就完全替换了原有规则,达到只修改sourceSets的目的。
内容的提问来源于stack exchange,提问作者Rpj
相关产品推荐
相关产品推荐

