【问题标题】:Exclude specific file from sourceSets从 sourceSets 中排除特定文件
【发布时间】:2017-04-10 14:48:49
【问题描述】:
使用 android 风格,我试图从另一个风格继承一种风格并覆盖父类中的一个类。除了目标类显示为重复之外,一切看起来和工作都很完美。我的猜测是有一种方法可以从 sourceSets 中排除父风味的类,例如:
sourceSets {
benchmark {
java {
srcDirs = ['src/main/java', 'src/offline/java', 'src/benchmark/java']
exclude { '**/Facade.java' in sourceSets.offline.files }
}
}
}
有人可以帮我解决这个问题吗?谢谢!
【问题讨论】:
标签:
android-gradle-plugin
android-flavors
【解决方案1】:
不要从其他风格继承,而是使用flavor dimensions
android {
...
flavorDimensions "version", "online"
productFlavors {
benchmark {
dimension "version"
...
}
standard {
dimension "version"
...
}
online {
dimension "online"
...
}
offline {
dimension "online"
...
}
}
//optionally filter combinations you don't want
variantFilter { variant ->
if (variant.flavors*.name.contains("online") && variant.flavors*.name.contains("benchmark")) {
variant.ignore = true
}
}
}
将facade.java 的一个版本放入src\benchmark\java\com\yourcompany\namespace\facade.java
将备用版本放入src\standard\java\com\yourcompany\namespace\facade.java
无论哪种构建风格始终相同的文件都保留在标准目录src\main\java\com\yourcompany\namespace\