Как бы создать один (Gradle) конфигурации для нескольких проектов Android Studio таким образом, что projB
зависит от project(':projA')
если projA
определен, но использует файл в libs/
иначе?Gradle нескольких проектов условного dependencry
Поскольку это может быть задано, в этом случае projA
- это SDK; projB
- тестовое приложение, предназначенное для демонстрации SDK. Если команда SDK получает отчет об ошибке, она часто включает в себя шаги воспроизведения с использованием projB
.
Когда projB
команда делает работу, они делают это на RC сборки projA
, в то время как команда SDK использует projB
, с зависимостью от project(':projA')
так, что сеанс отладки может быть запущен.
projB
не имеет конкретного определения его зависимости от projA
; эта команда берет вывод projA
с сервера сборки и переносит его в папку libs/
и имеет зависимость подстановки.
EDIT я, наконец, пошел с этим кодом в замыкании зависимостей, и он работает как шарм:
def sdkRef
project.getRootProject().allprojects.each { proj ->
if (proj.name.equals("Sdk")) {
sdkRef = proj;
return true;
}
}
if (sdkRef) {
println "SDK present in project; using project reference as dependency"
compile sdkRef
} else {
println "SDK is not present in project; using libs/"
}
Моя единственная проблема с этим решением заключается в изменении 'projB', где в идеале« build.gradle »проекта не изменится, а определение зависимостей будет в каком-то файле' settings.gradle', но на данный момент это достаточно хорошо , –
Удивительно, если вы можете создать сборку, которая удаляет артефакт, сгенерированный 'projectA', в' projectB/libs', поэтому projectB имеет только зависимость 'lib/ProjectA'. Проблема с этим, конечно, будет инициировать создание, прежде чем B начнет оценивать себя (без изменения B). Вам нужно будет сделать это вручную: \ – loosebazooka
Угадайте, что я не мог добраться до ваших изменений вовремя, в любом случае, возможно, используя project.rootProject.findProject (": projectA") лучше? – loosebazooka