JavaRush/Курсы/Модуль 3. Java Professional/Проект по теме: Maven

Проект по теме: Maven

Открыта

Задание: Нужно сделать исполняемый JAR-файл с игрой на JavaFX через графический движок от JavaRush.

Для этого нужно:

  1. Сделать fork из репозитория https://github.com/vasylmalik/project-maven.git
  2. Скачать свою версию проекта к себе на компьютер. Дальше будем работать с файлом pom.xml.
  3. Добавить зависимости:
    • org.apache.commons: commons-lang3: 3.12.0
    • org.openjfx: javafx-controls: 18.0.1
    • com.javarush: desktop-game-engine:1.0 (об этой зависимости будет отдельное задание)
    • org.junit.jupiter: junit-jupiter-engine: 5.8.2 (с scope test)
  4. Добавить плагины для:
    • установки зависимости com.javarush: desktop-game-engine:1.0 из библиотеки lib в локальный репозиторий (google в помощь);
    • плагин maven-compiler-plugin оставить без изменений;
    • плагин, который соберет все зависимости (с scope compile) и сложит в какую-то директорию при сборке;
    • плагин maven-jar-plugin, который сделает jar файл, содержащий код игры и зависимости. В этом плагине нужно сконфигурировать файл MANIFEST.MF, чтоб он содержал секции: Class-Path, Main-Class и Rsrc-Main-Class
    • В Class-Path должны быть прописаны все наши JAR-зависимости.
    • В Main-Class должен быть прописан класс org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader, который умеет использовать classpath из JAR-файлов, а также умеет стартовать приложение на JavaFX.
    • В Rsrc-Main-Class должен быть прописан стартовый класс игры (com.javarush.games.racer.RacerGame).
  5. В плагине maven-surefire-plugin сделать конфигурацию, чтоб тест StrangeTest не запускался при сборке. Остальные тесты должны выполняться.
  6. Добавить секцию “resources”, в которой сказать, что собранные JAR-зависимости это ресурс, чтоб плагин maven-jar-plugin сложил их внутрь JAR-файла в папку lib/
  7. Залить изменения в свой GitHub-репозиторий, отправить ссылку на него преподавателю.

Полезное:

  1. Билд нужно выполнять командой mvn clean install.
  2. Запуск игры (через Maven) с целью посмотреть можно выполнить командой mvn javafx:run.
  3. Некоторым плагинам нужно переопределить phase.
  4. В проекте используется версия JDK 18.0.1. Она должна быть скачана у тебя на компе.
  5. При билде через Maven сперва будут ошибки. Читай их внимательно и ты упростишь себе жизнь.
  6. В пакете org.eclipse.jdt.internal.jarinjarloader ничего не изменяй. В нем кастомный класс-лоадер (честно скопированный с StackOverflow), в котором изменен запуск метода main на запуск JavaFX приложения. Использовать только в учебных целях.
  7. Если выполнить все пункты, в результате сборки ты получишь fat-JAR-файл. Запустить и проверить, что все сделано правильно можно командой:
    <путь к java 18> -jar <имя результирующего jar файла> Пример "C:\Users\leo12\.jdks\openjdk-18.0.1.1\bin\java.exe" -jar "E:\temp\project-maven-1.0.jar" < code>
  8. В результате ты увидишь:
  9. Билд зависит от твоей операционной системы. То есть, если JAR-файл собран на Windows, его можно выполнить на любом компе с Windows и Java18. И нельзя выполнить на Mac и Linux.


Разбор проекта. Смотреть после выполнения!

Комментарии (11)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Андрей
Уровень 93
5 апреля, 10:15
а у меня не было ошибки о том, что пропущен <Class-Path>, 2 часа мучился...
28 ноября 2023, 10:54
Для тех, кто тупит, как и я, и не может понять что за /lib посмотрите свои файлы проекта
Никита
Уровень 60
Expert
21 октября 2023, 07:20
В официальной документации все понятно написано https://maven.apache.org/plugins/maven-install-plugin/
jvatechs Backend Developer в Ищу стажировку Expert
7 мая 2023, 21:23
Было интересно, спасибо гуглу и stackoverflow.
Сергей Работает в ITQ-Group Expert
5 ноября 2022, 16:37
Stas S
Уровень 108
Expert
29 августа 2022, 11:15
Anonymous #3001526
Уровень 108
Expert
28 августа 2022, 09:37
Когда будете делать проект, то берите зависимость javafx-controls версии 18.0.1. У меня с последней 20 версией этой зависимости прога не завелась
Алексей
Уровень 54
3 августа 2022, 07:41
Спасибо за наличие разбора проекта, но не за его качество, даже при 1440 HD х что разглядишь...
Sergey Drogunov Student Expert
22 июля 2022, 18:53
Хорошая дополнительная статья
Максим
Уровень 108
10 июня 2022, 20:04
Очепятка "апуск игры (через Maven) с целью посмотреть можно выполнить командой mvn javafx:run."
JRU Mentor-02 Backend Developer в JavaRush Mentor
13 июня 2022, 11:18
Спасибо, исправлено