RG: Как создавать модули и подпроекты в Gradle?

Поставим перед собой задачу. Предположим, что мы пишем приложение разбитое на несколько модулей:

  • domain – это модуль, в котором мы будем создавать все доменные классы. Доменные классы вынесли в отдельный модуль т. к. мы хотим использовать одну и туже доменную модель в нескольких независимых модулях.
  • common – это модуль, в котором мы будем создавать общее API. Другими словами, мы в нем создадим сервисы, которые будут использоваться в других модулях. Этот модуль зависит от модуля domain и в дальнейшем мы это будем конфигурировать.
  • server – это модуль, который представляет собой серверное приложение. Из него мы будем создавать исполняемый jar-файл.

Первым делом в папке с проектом в файле settings.gradle укажем модули, которые будем создавать. Используем метод include и через запятую перечислим наши модули.

Далее подправим в папке с проектом файл gradle.build – просто удалим все лишнее.

Модуль domain

Далее создадим в папке с проектом папку domain для этого модуля. В ней создадим класс src/main/java/Message.java.

Еще в этом модуле создадим новый build.gradle.

Модуль common

Далее создадим в папке с проектом папку common для этого модуля. В ней создадим класс src/main/java/MessageService.java. Обратите внимание, что этот класс использует класс Message из модуля domain. Для того, чтобы это все скомпилировалось нужно в build.gradle этого модуля указать, что он зависит от модуля domain.

Теперь в этом модуле создадим файл build.gradle. И укажем, что во время компиляции он зависит от модуля domain.

Модуль server

Создаем в папке с проектом папку server для этого модуля. В ней создадим класс src/main/java/Main.java. Обратите внимание, что этот класс использует класс Message из модуля domain и MessageService из модуля common. Для того, чтобы это все скомпилировалось нужно в build.gradle этого модуля указать, что он зависит от модуля common. Модуль domain можно не указывать т.к. он указан в common.

Теперь в этом модуле создадим файл build.gradle. И укажем, что во время компиляции он зависит от модуля common.

Проверка

Мы все сделали. Теперь можно зайти В ПАПКУ МОДУЛЯ SERVER и запустить в консоли команду gradle fatJar, которая создаст jar-файл с включенными в него классами из других модулей.

Исходники можно найти тут.

К оглавлению

6 Комментарии “RG: Как создавать модули и подпроекты в Gradle?

  1. В чем мб дело?
    E:\JAVA\gradle-nico\server>gradle fatJar
    FAILURE: Build failed with an exception.
    * What went wrong:
    Task ‘fatJar’ not found in project ‘:server’.
    * Try:
    Run gradle tasks to get a list of available tasks. Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output.
    BUILD FAILED
    BUILD FAILED
    Total time: 25.346 secs

  2. Ура разобрался, как всегда помучавшись. Решил сегодня доделать то, что месяц назад не получалось, ошибка моя в том, что во всех трех модулях файл build.gradle создавал там же где и классы))

Добавить комментарий

Ваш e-mail не будет опубликован.

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">