HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Ручная компиляции кода довольно утомительный процесс даже во время обучения. В реальных приложениях такой подход просто не применим, слишком много действий придется делать руками. Для компиляции используются специальные системы сборки, такие как Maven или Gradle. Последний стал стандартом де-факто для новых приложений, поэтому рассмотрим работу именно с ним. Принцип у всех таких систем один и тот же, поэтому зная один, несложно разобраться и в других.</p>
1 <p>Ручная компиляции кода довольно утомительный процесс даже во время обучения. В реальных приложениях такой подход просто не применим, слишком много действий придется делать руками. Для компиляции используются специальные системы сборки, такие как Maven или Gradle. Последний стал стандартом де-факто для новых приложений, поэтому рассмотрим работу именно с ним. Принцип у всех таких систем один и тот же, поэтому зная один, несложно разобраться и в других.</p>
2 <p>Gradle - это не просто автоматизатор компиляции. Это навороченная система сборки, где компиляция это всего лишь один из этапов. Сборка проекта - довольно широкое понятие. Она включает в себя компиляцию исходного кода, упаковку в jar, запуск тестов и другие шаги, необходимые для создания рабочего приложения. Ключевые возможности Gradle:</p>
2 <p>Gradle - это не просто автоматизатор компиляции. Это навороченная система сборки, где компиляция это всего лишь один из этапов. Сборка проекта - довольно широкое понятие. Она включает в себя компиляцию исходного кода, упаковку в jar, запуск тестов и другие шаги, необходимые для создания рабочего приложения. Ключевые возможности Gradle:</p>
3 <ol><li>Автоматическая сборка проекта. Gradle сам знает какие файлы и как надо собирать. Сам компилирует, сам упаковывает в JAR</li>
3 <ol><li>Автоматическая сборка проекта. Gradle сам знает какие файлы и как надо собирать. Сам компилирует, сам упаковывает в JAR</li>
4 <li>Быстрая инкрементальная сборка. Компилируется только то, что изменилось</li>
4 <li>Быстрая инкрементальная сборка. Компилируется только то, что изменилось</li>
5 <li>Управление зависимостями. Gradle сам качает и подключает библиотеки. И заодно умеет их обновлять</li>
5 <li>Управление зависимостями. Gradle сам качает и подключает библиотеки. И заодно умеет их обновлять</li>
6 </ol><p>Полный список возможностей<a>огромен</a>. Большая часть из них работает автоматически, об этом не придется думать.</p>
6 </ol><p>Полный список возможностей<a>огромен</a>. Большая часть из них работает автоматически, об этом не придется думать.</p>
7 <p>В повседневной работе Java-программист пользуется Gradle через редактор, но во время обучения нужно потратить немного времени на то, чтобы разобраться с тем как он работает. Иначе потом будет сложно, когда что-то пойдет не так и возникнет ошибка. Поэтому здесь мы проделаем все операции через консоль, а дальше подключим редактор.</p>
7 <p>В повседневной работе Java-программист пользуется Gradle через редактор, но во время обучения нужно потратить немного времени на то, чтобы разобраться с тем как он работает. Иначе потом будет сложно, когда что-то пойдет не так и возникнет ошибка. Поэтому здесь мы проделаем все операции через консоль, а дальше подключим редактор.</p>
8 <p>Начнем с установки. Если Gradle у вас не установлен, то посмотрите<a>инструкцию</a>. Проверить установку можно так:</p>
8 <p>Начнем с установки. Если Gradle у вас не установлен, то посмотрите<a>инструкцию</a>. Проверить установку можно так:</p>
9 <p>Теперь инициализируем новый Gradle-проект:</p>
9 <p>Теперь инициализируем новый Gradle-проект:</p>
10 <p>Дальше Gradle задаст несколько вопросов, на базе которых сформируется правильная структура. Если во время создания вы ошиблись и выбрали не тот вариант, то ничего страшного. Просто дойдите до конца и пересоздайте директорию с проектом. Потом запустите все заново. Разбираем вопросы:</p>
10 <p>Дальше Gradle задаст несколько вопросов, на базе которых сформируется правильная структура. Если во время создания вы ошиблись и выбрали не тот вариант, то ничего страшного. Просто дойдите до конца и пересоздайте директорию с проектом. Потом запустите все заново. Разбираем вопросы:</p>
11 <p>Выбираем тип <em>basic</em>, который Gradle предлагает по умолчанию. Этот тип представляет собой базовую структуру проекта Gradle, которую дальше можно настроить и дополнить по мере необходимости</p>
11 <p>Выбираем тип <em>basic</em>, который Gradle предлагает по умолчанию. Этот тип представляет собой базовую структуру проекта Gradle, которую дальше можно настроить и дополнить по мере необходимости</p>
12 <p>Выбираем язык для описания Gradle файлов. Kotlin DSL является выбором по умолчанию. Мы тоже будем использовать Kotlin</p>
12 <p>Выбираем язык для описания Gradle файлов. Kotlin DSL является выбором по умолчанию. Мы тоже будем использовать Kotlin</p>
13 <p>Просто жмем Enter. Текущее имя директории и есть имя проекта.</p>
13 <p>Просто жмем Enter. Текущее имя директории и есть имя проекта.</p>
14 <p>Выбираем yes. После этого появляется радостная надпись:</p>
14 <p>Выбираем yes. После этого появляется радостная надпись:</p>
15 <p>Посмотрим на получившуюся структуру:</p>
15 <p>Посмотрим на получившуюся структуру:</p>
16 <p>Много всего, начнем по порядку.</p>
16 <p>Много всего, начнем по порядку.</p>
17 <p>Gradle сразу подготавливает проект к использованию через git добавив два файла<em>.gitignore</em>и<em>.gitattributes</em>. Игнорируются файлы сборки, которые попадут в директорию<em>build</em>и<em>.gradle</em>, это служебные файлы Gradle, которые он сам себе сгенерирует во время работы.</p>
17 <p>Gradle сразу подготавливает проект к использованию через git добавив два файла<em>.gitignore</em>и<em>.gitattributes</em>. Игнорируются файлы сборки, которые попадут в директорию<em>build</em>и<em>.gradle</em>, это служебные файлы Gradle, которые он сам себе сгенерирует во время работы.</p>
18 <p>Файлы<em>gradlew</em>и<em>gradlew.bat</em>нужны для установки самого Gradle. Концепция здесь такая, Gradle во время создания проекта делает так, чтобы проект не использовал глобально установленный Gradle. Он скачивает сам себя в директорию<em>gradle</em>. Все команды будут запускаться через<em>./gradlew</em>(в Windows<em>./gradlew.bat</em>). Зачем так сделано? Так Gradle фиксирует версию. Если поменяется глобально установленная версия, то проект продолжит работать с той, с которой он работал. Меньше шансов что-то сломать, но сложнее в обновлении.</p>
18 <p>Файлы<em>gradlew</em>и<em>gradlew.bat</em>нужны для установки самого Gradle. Концепция здесь такая, Gradle во время создания проекта делает так, чтобы проект не использовал глобально установленный Gradle. Он скачивает сам себя в директорию<em>gradle</em>. Все команды будут запускаться через<em>./gradlew</em>(в Windows<em>./gradlew.bat</em>). Зачем так сделано? Так Gradle фиксирует версию. Если поменяется глобально установленная версия, то проект продолжит работать с той, с которой он работал. Меньше шансов что-то сломать, но сложнее в обновлении.</p>
19 <p>Файл<em>settings.gradle.kts</em>содержит различные настройки, например, там задается имя проекта. Остальное добавляется по мере развития и требований со стороны кода.</p>
19 <p>Файл<em>settings.gradle.kts</em>содержит различные настройки, например, там задается имя проекта. Остальное добавляется по мере развития и требований со стороны кода.</p>
20 <p>Файл<em>build.gradle.kts</em>- это основной файл Gradle, в котором на языке Kotlin описано то, как будет работать система сборки. Пока этот файл пустой, чуть позже мы его наполним</p>
20 <p>Файл<em>build.gradle.kts</em>- это основной файл Gradle, в котором на языке Kotlin описано то, как будет работать система сборки. Пока этот файл пустой, чуть позже мы его наполним</p>
21 <p>Далее нужно создать место, в котором будет располагаться исходный код нашего проекта. Внутри директории проекта создайте следующую файловую структуру:<em>src/main/java/io/hexlet/example</em>. Назначение директорий здесь следующее. Директория<em>src</em>(source) - место, в котором лежит весь исходный код проекта. Директория<em>main</em>отвечает за код проекта и дополнительные ресурсы (например, картинки). Внутри находится<em>java</em>, то есть тут лежит Java-код. Но подразумевается, что бывает и по-другому. И вот только внутри<em>java</em>начинается структура, соответствующая пакету проекта.</p>
21 <p>Далее нужно создать место, в котором будет располагаться исходный код нашего проекта. Внутри директории проекта создайте следующую файловую структуру:<em>src/main/java/io/hexlet/example</em>. Назначение директорий здесь следующее. Директория<em>src</em>(source) - место, в котором лежит весь исходный код проекта. Директория<em>main</em>отвечает за код проекта и дополнительные ресурсы (например, картинки). Внутри находится<em>java</em>, то есть тут лежит Java-код. Но подразумевается, что бывает и по-другому. И вот только внутри<em>java</em>начинается структура, соответствующая пакету проекта.</p>
22 <p>В директории<em>example</em>создайте новый Java-класс с именем<em>App.java</em>и добавьте туда код:</p>
22 <p>В директории<em>example</em>создайте новый Java-класс с именем<em>App.java</em>и добавьте туда код:</p>
23 <p>Само приложение готово. Теперь перейдем к настройке системы сборки. Откройте файл<em>build.gradle.kts</em>. Именно с этим файлом придется работать больше всего, настраивая Gradle для подключения новых библиотек и их конфигурации. Добавьте туда следующий код:</p>
23 <p>Само приложение готово. Теперь перейдем к настройке системы сборки. Откройте файл<em>build.gradle.kts</em>. Именно с этим файлом придется работать больше всего, настраивая Gradle для подключения новых библиотек и их конфигурации. Добавьте туда следующий код:</p>
24 <p>Теперь все готово. Попробуем запустить проект, а в следующем уроке поговорим о том, как конкретно работать с Gradle:</p>
24 <p>Теперь все готово. Попробуем запустить проект, а в следующем уроке поговорим о том, как конкретно работать с Gradle:</p>
25  
25