В чем разница между buildscript и allprojects в build.gradle?
Может ли кто-нибудь сказать мне, на какой многопроектной сборке Gradle, в чем разница между разделом "allprojects" и разделом "buildscript"? У обоих есть repositories
а также dependencies
задача. Является allprojects
для моего проекта? Как насчет buildscript
?
buildscript {
repositories {
...
}
dependencies {
...
}
}
а также
allprojects(subprojects) {
repositories {
...
}
dependencies {
...
}
}
2 ответа
"buildscript
"Раздел конфигурации предназначен для самого gradle (то есть для изменения того, как gradle может выполнять сборку). Поэтому этот раздел обычно включает плагин Android Gradle.
"allprojects
Раздел предназначен для модулей, которые создаются Gradle.
Часто раздел репозитория одинаков для обоих, так как оба обычно получают свои зависимости от jcenter (или, возможно, maven central). Но раздел "зависимости" будет другим.
Обычно раздел "зависимости" для "всех проектов" пуст, поскольку зависимости для каждого модуля уникальны и будут в файле "build.gradle" в каждом из модулей. Однако, если все модули имеют одинаковые зависимости, они могут быть перечислены здесь.
TL;DR: buildscript
помогает найти плагины, allprojects
относится ко всем проектам
https://docs.gradle.org/current/userguide/userguide_single.html говорит
Бинарные плагины, опубликованные в виде внешних jar-файлов, можно добавить в проект, добавив плагин в путь к сценарию сборки, а затем применив плагин.
Так вам нужно buildscript
для Gradle, чтобы найти плагины, а
Gradle по своей сути намеренно обеспечивает очень мало для автоматизации реального мира. Все полезные функции, такие как возможность компилировать код Java, добавляются плагинами. Плагины добавляют новые задачи (например, JavaCompile), объекты домена (например, SourceSet), соглашения (например, источник Java находится в src/main/java), а также расширяют основные объекты и объекты из других плагинов.
Что касаетсяallprojects
:
API проекта предоставляет свойство
allprojects
который возвращает список с текущим проектом и всеми его подпроектами под ним. Если вы позвонитеallprojects
с закрытием заявления о закрытии делегируются проектам, связанным сallprojects
,