RG: Как создать Gradle проект через IntelliJ IDEA?

Иногда бывает удобным создавать gradle проект не через gradle напрямую, а через IntelliJ IDEA. Делается это очень просто.

Шаг 1

Первым делом нам нужно установить gradle, если он не установлен.

Шаг 2

Запустить  IntelliJ IDEA и выбрать создание нового проекта.

1

Шаг 3

Выбрать тип проекта Gradle и указать путь к папке куда он установлен.

2

Шаг 4

Указываем имя проекта.

3

 

В принципе можно утверждать, что проект готов к работе.

4

 

Шаг 5

Давайте создадим Main класс, который выводит Hello World в консоль. Для этого создадим папку src/main/java. ПУТЬ ДОЛЖЕН БЫТЬ ИМЕННО ТАКИМ КАК Я УКАЗАЛ. Иначе gralde не найдет исходники проекта.

56

Шаг 6

Создадим класс, который будет выводить фразу Hello World.
789

Шаг 7

Запускаем этот код.

1011

Все.

Еще можно ознакомиться с этим видео.

Подробнее

RG: Как создать war-файл и запустить его?

Поставим перед собой задачу. У нас есть модуль server. Он сейчас собирается в jar-файл – это не порядок. Нам нужно создать из этого модуля web-приложение и собрать его в war-файл.

  1. Изменим скрипт server/build.gradle.
    Заменяем плагин “java” на плагин “war” и удаляем задачу ”fatJar”.


    Далее нужно прописать новый “mavenCentral” репозиторий, с которого будут браться дополнительные зависимости. Сейчас у нас уже есть “jcenter”, который указан во внешнем build.gradle, но он нам не подходит т.к. в нем нет нужных нам артефактов (servlet-api). Также указываем новую зависимость нашего модуля server ‘javax.servlet:javax.servlet-api:3.1.0′.

    Теперь server/build.gradle выглядит так.
  2. Заменим файл server/src/main/java/Main.java на файл server/src/main/java/MainServlet.java.


    Этот сервлет будет принимать наши запросы и в ответе высылать текст сообщения.
  3. Теперь создадим главную страницу нашего web приложения server/src/main/webapp/index.html. Со ссылкой, которая отправит запрос в MainServlet.

  4. Еще добавим конфигурационный файл server/src/main/webapp/WEB-INF/web.xml, в котором укажем страницу, которую нужно загрузить первой.

Вот и все. Теперь можно зайдя в папку server выполнить команду gradle war. Она соберет для нас архив server/build/libs/server-1.0.war.

Наше web приложение “server” теперь можно запустить на tomcat. Для этого скачайте последний tomcat и распакуйте его в любую папку. Затем просто положите server-1.0.war в папку %TOMCAT_HOME%/webapps и запусти файл %TOMCAT_HOME%/bin/startup.bat. Через несколько секунд приложение будет запущено и вы можете его проверит по этому адресу http://localhost:8080/server-1.0/ .

Результат.
index_htmlresponse

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

К оглавлению

Подробнее

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-файл с включенными в него классами из других модулей.

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

К оглавлению

Подробнее

RG: Как создать jar-файл со всеми зависимостями в Gradle?

Для того, чтобы создать jar-файл и чтобы он был автономным, то есть содержал в себе зависимости необходимые для его работы, нужно в ручную собрать все зависимости и для этого мы сделаем новую задачу. Добавим задачу в build.gradle.

  • task fatJar(type: Jar) – альтернативный способ создания задачи.
  • type: Jar – указывает тип задачи, которую мы создаем.
  • configurations.compile.collect – собираем необходимые зависимости отмеченные как compile
  • it.isDirectory() ? it : zipTree(it) – проверяем, если зависимость папка, то отправляем как есть, а если архив (jar), то извлекаем классы сохраняя структуру и отправляем. Далее они появятся в jar-файле.
  • with jar – вызываем задачу собрать jar-файл.

Вызываем задачу gradle fatJar.

Теперь запустим созданный jar.

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

К оглавлению

Подробнее

RG: Как создавать свои задачи в Gradle?

Чтобы создать свою задачу нужно в build.gradle вызвать метод task и передать в него имя задачи и указать, что она будет делать. Например, создадим задачу hello, которая будет выводить надпись “Hello World”.

Теперь проверим, что все работает. Выполним задачу gradle hello.

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

К оглавлению

 

Подробнее

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

Для примера подключим spring к нашему проекту. Откроем build.gradle и добавим в него зависимость на spring. В область dependencies добавим следующую строку.

compile – указывает в какой момент понадобится эта зависимость.  

  • compile – зависимость нужна в момент компиляции.
  • testCompile – зависимость нужна в момент компиляции тестов.

build.gradle теперь выглядит так.

Можно было бы тут закончить, но еще проверим, что все работает. Создадим файл src/main/resources/spring-context.xml и добавим в него bean.

Далее получим этот bean в классе Main файл Main.java.

Возможно, если Вы делаете нечто подобное через IDE (Intellijet Idea,  eclipse), то возможно столкнетесь с ошибками. Например,

Пример ошибки 1 Пример ошибки 2 

Это случается, если IDE автоматически не синхронизировала проект Gradle (изменения в build.gradle) и проект в IDE. Для этого можете попробовать выполнить следующее:

  • Команду gradle idea и перезапустить IDE (если она сама не предложит перезапуститься)
  • Переимпортировать проект используя IDE.
  • Нажать кнопку “обновить” для Idea solution

Теперь можно запустить тесты.

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

К оглавлению

Подробнее

RG: Как указать версию jar-файла?

Для этого в build.gradle обращаемся к параметру version или к методу setVersion.

Запускаем сборку.

Получили jar с версией.

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

К оглавлению

Подробнее

RG: Что представляет собой settings.gradle?

settings.gradle – это файл, который содержит в себе скрипт написанный на языке groovy. Этот скрип отвечает за различные опции конфигурации сборки проекта. Существует прямая связь между файлом settings.gradle и интерфейсом Settings. Во время инициализации сборки, Gradle создает объект являющийся инстансом этого интерфейса.      

Это означает, что когда мы в скрипте пишем rootProject.name = ‘gradle-reference-examples’, то мы у объекта созданного во время инициализации сборки и реализующего интерфейс Settings, обращаемся к полю rootProject, которое является объектом класса реализующего интерфейс ProjectDescriptor и у него мы устанавливаем поле name равное значению ‘gradle-reference-examples’.

К оглавлению

Подробнее

RG: Что представляет собой build.gradle?

build.gradle – это файл, который содержит в себе скрипт написанный на языке groovy. Этот скрип отвечает за, то как будет собираться наш проект. Существует прямая связь между файлом build.gradle и интерфейсом Project. Во время инициализации сборки, Gradle создает объект являющийся инстансом этого интерфейса.      

Это означает, что когда мы в скрипте пишем apply plugin: ’java’, то мы у объекта созданного во время инициализации сборки и реализующего интерфейс Project, вызываем метод apply и передаем в него Map c ключом ‘plugin’ и значением ‘java’.

Или вот, например, если мы хотим указать версию проекта, то можем вызвать метод setVersion или напрямую обратиться к полю version. Groovy позволяет обращаться напрямую к полям в обход сеттера.

К оглавлению

Подробнее