Учебники

Gradle — Multi-Project Build

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

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

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

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

  • Файл build.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 для всех проектов. Закрытие подпроектов применяет общие конфигурации для всех подпроектов, но не к корневому проекту, как закрытие всех проектов.

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

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

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

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

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