Багатомодульний проект має один основний модуль і безліч підмодулів. Він має такий макет:
(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.
як префікс.
Будь-які властивості цього файлу можна використовувати в будь-якому build.gradle, тому деякі проекти також розміщують інформацію про версію залежностей або інформацію про випуск gradle.properties
, але це, ймовірно, зловживання цим файлом.
my-gradle-stuff / 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.