对于每一个味道你要
- 创建一个SourceSet所以它会被编译
- 充分利用
${flavour}Compile
Configuration延长主compile
配置(见表45.6 here通过创建每SourceSet配置java插件)
- 创建一个JarTask(使用风味作为分类器)
- Publish the jar artifact so fla vour可以通过classifier
喜欢的东西被引用:
def flavours = ['fake', 'staging', 'prod']
flavours.each { String flavour ->
SourceSet sourceSet = sourceSets.create(flavour)
sourceSet.java {
srcDirs 'src/main/java', "src/$flavour/java"
}
sourceSet.resources {
srcDirs 'src/main/resources', "src/$flavour/resources"
}
Task jarTask = tasks.create(name: "${flavour}Jar", type: Jar) {
from sourceSet.output
classifier flavour
}
configurations.getByName("${flavour}Compile").extendsFrom configurations.compile
configurations.getByName("${flavour}CompileOnly").extendsFrom configurations.compileOnly
configurations.getByName("${flavour}CompileClasspath").extendsFrom configurations.compileClasspath
configurations.getByName("${flavour}Runtime").extendsFrom configurations.runtime
artifacts {
archives jarTask
}
assemble.dependsOn jarTask
}
然后,引用在其他项目的口味之一,你可以做以下之一:
dependencies {
compile project(path: ':someProject', configuration: 'fakeCompile')
compile project(path: ':someProject', configuration: 'fakeRuntime')
compile 'someGroup:someProject:1.0:fake'
compile group: 'someGroup', name: 'someProject', version: '1.0', classifier: 'fake'
}
你确定这些不能生成类型? AFAIK,构建类型是Gradle Android插件恰好利用的Gradle事物。 – CommonsWare
哦,他们肯定可以buildTypes。在android插件术语中,我只需要stagingDebug,prodRelease和fakeDebug – ZakTaccardi
@CommonsWare所以'buildType'是一个gradle概念 - 不只是一个android插件的概念?有没有关于纯java的任何文档?每谷歌搜索似乎导致我的Android插件 – ZakTaccardi