EDIT ароматизаторов и дорожки:Gradle SourceSets по productFlavor и buildType
В настоящее время у меня есть:
sourceSets.whenObjectAdded {
sourceSet ->
def sourceData = rootProject.ext[sourceSet.name]
sourceSet.java.srcDirs = sourceData.javaDirRelease
}
rootProject.ext файл, где все конкретная конфигурация productFlavor определяется следующим образом:
ext{
flavor1 = [
javaDirRelease : ['src/pathToJavaReleaseFiles']
javaDirDebug : ['src/pathToJavaDebugFiles']
]
}
В основной сборке.gradle я также делаю: apply from: 'variants.gradle'
, который содержит вышеупомянутый ext { } объект.
The sourceSets определены как таковые:
sourceSets {
flavor1{}
}
Это работает, но я хочу сделать добавить sourceSet специфичную для productFlavor и buildType так:
sourceSet.debug.java.srcDirs = 'src/pathToJavaDebugFiles'
, которые могут быть определены для каждого вкуса продукта и для типа buildType, но это не работает, когда я пытаюсь добавить его динамически.
То, что работает для меня это (благодаря этому ответу How can I specify per flavor buildType sourceSets?):
sourceSets {
flavor1{
def flavorData = rootProject.ext['flavor1']
release {
java.srcDirs = flavorData.javaDirRelease
}
debug {
java.srcDirs = flavorData.javaDirDebug
}
}
}
Однако я очень хотел бы, чтобы это был добавлен динамически, так что я все еще могу сохранить мой конфигурационный файл нетронутым. Моя конфигурация сборки довольно сложная и не такая простая, как описано здесь, поэтому мне не нужно предлагать исходные файлы в папку src/flavor1Debug, потому что эти ресурсы также используются из других продуктов, но это не сработает.
Я все еще не понимаю, что вы хотите здесь ... вы говорите: «Я хочу добавить sourceSet», но фрагмент кода устанавливает java source dirs на существующий sourceSet? Кроме того, у вас есть приложение из файла gradle; что находится в 'variants.gradle'? Это где вы определяете объект ext {}? Тогда откуда берется 'javaDirRelease'? –
Я немного отредактировал ответ, поэтому у вас есть лучшее представление о вариантах.gradle, этот файл просто не содержит путей исходных каталогов. «Add to sourceSet» было семантическим недоразумением, я имел в виду «установить sourceSet». Варианты.gradle содержат объект ext {} yes. – box