Вы могли бы сделать это, используя конфигурации.
Попробуйте объявить конфигурации во вложенных циклах для комбинаций версий зависимостей, с которыми вы хотите построить.
Затем назначьте различные комбинации зависимостей дляконфигурации.
Создание задач архивирования для всех конфигураций.
Наконец, объявляйте артефакты для всех конфигураций.
Например:
scalaDependencies.each { scalaDep ->
sparkDependencies.each { sparkDep ->
def configurationName = buildConfigurationName(scalaDep, sparkDep)
configurations.create(configurationName)
configurations."$configurationName" {
extendsFrom compile // this would be the simplest case
}
dependencies {
"$configurationName"(scalaDep)
"$configurationName"(sparkDep)
}
task("${configurationName}Jar", type: Jar) {
from "$configurationName"
}
artifacts {
"$configurationName"("${configurationName}Jar")
}
}
}
scalaDependencies
и sparkDepdendencies
будет просто строкой, которую вы обычно объявляете как зависимости, включая соответствующие номера версий.
Метод / закрытие buildConfigurationName
вам придется самостоятельно разобраться;)
Я кодирую это прямо сейчас, но я вполне уверен, что это сработает, если вы заполните все оставшиеся биты.
Вам также может понадобиться еще один блок для фактического создания mavenPublication
s, но если он сработает до момента создания банок, я думаю, вымогу решить это.
У меня есть рабочий пример, который несколько похож, объявляя несколько исходных наборов и артifacts из списка имен, которые также могут быть полезны.
Найдите его здесь: https://github.com/thokari/gradle-workshop/blob/master/examples/09-multiple-artifacts/build.gradle