Статьи

Многопроектная сборка Gradle — родительская структура

Когда вы выходите из maven фоне, скорее всего, вы привыкли к структуре родительского pom.

Теперь, когда дело доходит до gradle, все немного по-другому.

Представьте себе сценарий наличия проекта, включая интерфейсы и различные другие реализации. Gradle
Это будет структура нашего проекта.

1
2
3
4
5
multi-project-gradle
-- specification
-- core
-- implementation-a
-- implementation-b

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

Следующим шагом является создание каждого проекта внутри мульти-проекта-gradle.

Каждый проект — это каталог с файлом builde.gradle.

01
02
03
04
05
06
07
08
09
10
11
plugins {
    id 'java'
}
 
repositories {
    mavenCentral()
}
 
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

Когда вы закончите, вам нужно сделать связь между родительским проектом и дочерним проектом.
Для этого вы создаете multi-project-gradle / settings.gradle и включаете другие проекты.

1
2
3
4
5
rootProject.name = 'com.gkatzioura'
include 'specification'
include 'core'
include 'implementation-a'
include 'implementation- b'

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

Одним из основных преимуществ использования многопроектных сборок является устранение дублирования.

Для этого мы создадим файл multi-project-gradle / build.gradle, добавим зависимость junit и центральную ссылку maven.

01
02
03
04
05
06
07
08
09
10
11
12
subprojects {
    apply plugin: 'java'
 
    repositories {
        mavenCentral()
    }
 
    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
 
}

Теперь мы можем добавить наши зависимости к каждому проекту и даже указать зависимости, необходимые для подпроектов.

Например, основной проект использует проект спецификации

1
2
3
dependencies {
  compile project(':specification')
}

и каждый проект внедрения использует основной проект

1
2
3
dependencies {
    compile project(':core')
}

Вы можете найти проект на GitHub .

Опубликовано на Java Code Geeks с разрешения Эммануила Гкациоураса, партнера нашей программы JCG. Смотрите оригинальную статью здесь: Gradle multi project build — родительская структура, похожая на pom

Мнения, высказанные участниками Java Code Geeks, являются их собственными.