Когда вы выходите из maven фоне, скорее всего, вы привыкли к структуре родительского pom.
Теперь, когда дело доходит до 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, являются их собственными. |