【问题标题】: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\

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 2017-11-06
      • 2022-06-10
      相关资源
      最近更新 更多