Gradle - Многопроектная сборка

Gradle легко справляется с самыми маленькими и крупными проектами. Небольшие проекты имеют один файл сборки и дерево исходных текстов. Очень легко переварить и понять проект, разделенный на более мелкие, взаимозависимые модули. Gradle отлично поддерживает этот сценарий многопроектной сборки.

Структура для многопроектной сборки

Такие сборки бывают разных форм и размеров, но у них есть некоторые общие характеристики:

  • А settings.gradle файл в корневом или главном каталоге проекта.

  • А build.gradle файл в корневом или главном каталоге.

  • Дочерние каталоги, у которых есть собственные *.gradle файлы сборки (в некоторых сборках с несколькими проектами могут отсутствовать сценарии сборки дочерних проектов).

Чтобы перечислить все проекты в файле сборки, вы можете использовать следующую команду.

C:\> gradle -q projects

Вывод:

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'projectReports'
+--- Project ':api' - The shared API for the application
\--- Project ':webapp' - The Web application implementation

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :api:tasks

В отчете отображается описание каждого проекта, если он указан. Вы можете использовать следующую команду, чтобы указать описание. Вставьте его вbuild.gradle файл.

description = 'The shared API for the application'

Указание общей конфигурации сборки

В build.gradle в файле root_project, общие настройки могут применяться ко всем проектам или только к подпроектам.

allprojects {
   group = 'com.example.gradle'
   version = '0.1.0'
}

subprojects {
   apply plugin: 'java'
   apply plugin: 'eclipse'
}

Это определяет общий com.example.gradle группа и 0.1.0версия ко всем проектам. Вsubprojects закрытие применяет общие конфигурации для всех подпроектов, но не для корневого проекта, например allprojects закрытие.

Конкретные конфигурации и зависимости проекта

Ядро ui и util подпроекты также могут иметь свои build.gradle файл, если у них есть особые потребности, которые еще не учитываются общей конфигурацией корневого проекта.

Например, проект пользовательского интерфейса обычно зависит от основного проекта. Значит, проекту ui нужен собственныйbuild.gradle файл, чтобы указать эту зависимость.

dependencies {
   compile project(':core')
   compile 'log4j:log4j:1.2.17'
}

Зависимости проекта указываются в методе проекта.