В многопроектной сборке Gradle, может ли кто-нибудь сказать мне, в чем именно разница между разделом «все проекты» и разделом «подпроекты»? Только родительский каталог? Кто-нибудь пользуется обоими? Если да, то есть ли у вас общие правила, определяющие, что обычно помещается в каждое из них?
Связанный вопрос: в чем разница между двумя синтаксисами (действительно для всех проектов И подпроектов):
subprojects { ...
}
и
configure(subprojects) { ...
}
Когда бы вы были друг над другом?
Добавляя к ответу Райана, этот
configure
метод становится важным, когда вы хотите настроить пользовательские подмножества объектов. Напримерconfigure([project(":foo"), project(":bar")]) { ... }
илиconfigure(tasks.matching { it.name.contains("foo") }) { ... }
.Когда использовать
allprojects
илиsubprojects
зависит от обстоятельств. Часто вы будете использовать и то, и другое. Например, подключаемые модули, связанные с кодом, такие как подключаемый модуль Java, обычно применяютсяsubprojects
, поскольку во многих сборках корневой проект не содержит никакого кода. С другой стороны, плагины Eclipse и IDEA обычно применяются кallprojects
. Если сомневаетесь, посмотрите примеры и другие сборки и / или поэкспериментируйте. Общая цель - избежать ненужной конфигурации. В этом смыслеsubprojects
лучше, чемallprojects
до тех пор, пока он дает ожидаемые результаты.источник