В многомодульном проекте есть один главный модуль и множество подмодулей. Он имеет такую раскладку:
(root)
+- settings.gradle
+- build.gradle # optional (commonly present)
+- gradle.properties # optional
+-- buildSrc/ # optional
| +- build.gradle
| +-- src/...
+-- my-gradle-stuff/ # optional
| +- utils.gradle # optional
+-- sub-a/
| +- build.gradle
| +- src/
+-- sub-b/
+- build.gradle
+- src/
подмодули также могут располагаться глубже во вложенных папках, но без изменения кода в settings.gradle их имя будет включать имя таких папок.
settings.gradle
Основная роль settings.gradle состоит в том, чтобы определить все включенные подмодули и пометить корень каталога дерева модулей, чтобы вы могли иметь только один settings.gradle
файл в многомодульном проекте.
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
Файл настроек также написан на Groovy, и поиск подмодулей можно настроить.
build.gradle
На каждый модуль приходится один такой файл, он содержит логику сборки для этого модуля.
В build.gradle
файле основного модуля вы можете использовать allprojects {}
или subprojects {}
для определения настроек для всех остальных модулей.
В build.gradle
файле подмодулей вы можете использовать, compile project(':sub-a')
чтобы один подмодуль зависел от другого.
gradle.properties
Это необязательно, его основная цель - предоставить параметры запуска для использования самого Gradle, например
org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
Эти значения могут быть переопределены файлом USER_HOME/.gradle/gradle.properties
и переопределены аргументами командной строки gradle. Также можно установить переменные среды для сборки в этом файле, используя systemProp.
префикс as.
Любое свойство в этом файле можно использовать в любом build.gradle, поэтому некоторые проекты также помещают информацию о версии или выпуске зависимостей gradle.properties
, но это, вероятно, является злоупотреблением этим файлом.
мой-градиент-материал / utils.gradle
(Возможно любое имя папки или файла.) Вы можете определить дополнительные пользовательские файлы Gradle для повторного использования определений и включить их в другие файлы Gradle с помощью
apply from: "$rootDir/gradle/utils.gradle"
другие места для размещения этого могут быть src/gradle
илиsrc/build/gradle
buildSrc / ...
Эта папка особенная, она как отдельный проект gradle. Он создается до того, как делать что-либо еще, и может предоставлять функцию для использования в любом другом файле gradle. По техническим причинам поддержка IDE ссылок на эту папку работает намного лучше, чем любой другой способ извлечения общего кода из нескольких build.gradle
файлов в отдельное место.
Вы можете определить сложную настраиваемую логику сборки в java, groovy или kotlin вместо написания и развертывания плагина. Это также полезно для модульного тестирования вашего пользовательского кода сборки, так как вы можете иметь модульные тесты. Структура исходных папок buildSrc
может быть адаптирована как для любого проекта java / groovy / kotlin.