У меня есть многомодульный проект, некоторые из которых являются библиотеками Java, а другие - библиотеками Android.Я хотел применить пользовательские плагины для своих подпроектов (модулей) в зависимости от типа проекта, поэтому я сделал что-то вроде этого (см. Фрагмент кода) в файле build.gradle
корня моего проекта.Эта настройка работает, но мне интересно, есть ли другой способ сделать это.Gradle предлагает Фильтрация по свойствам , но я получаю ошибку Cannot add task 'integTest' as a task with that name already exists
, если я попробую это.integTest
- это задача, которую я создал в файлах customJavaBuild.gradle
и customAndroidBuild.gradle
.Любая помощь приветствуется.Спасибо!
def javaLibraries = ["projA", "projB"]
def androidLibraries = ["projC"]
subprojects {
if (javaLibraries.contains(it.name)) {
apply from: '$rootDir/gradle/customJavaBuild.gradle'
} else if (androidLibraries.contains(it.name)) {
apply from: '$rootDir/gradle/customAndroidBuild.gradle'
} else {
//Apply custom plugin for some other project type.
}
}
Фильтрация по свойствам
subprojects {
project.ext {
projectType = null
}
project.afterEvaluate {
if (project.ext.projectType == 'jar') {
apply from: '$rootDir/gradle/customJavaBuild.gradle'
} else if (project.ext.projectType == 'aar') {
apply from: '$rootDir/gradle/customAndroidBuild.gradle'
} else {
//Apply custom plugin for some other project type.
}
}
}
И у меня есть это дополнительное свойство ext.projectType = 'jar'
в моих подмодулях '(projA, projB, projC) build.gradle
файлов.