В этом руководстве рассказывается, как использовать Maven для создания простого проекта Java.
Вы создадите приложение, которое определяет время суток, а затем создадите его с помощью Maven.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/prereq_editor_jdk_maven_buildtools.adoc
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/how_to_complete_this_guide.adoc
Сначала вам нужно настроить проект Java для сборки Maven. Чтобы сосредоточиться на Maven, на данный момент сделайте проект максимально простым. Создайте эту структуру в папке проекта по вашему выбору.
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/create_directory_structure_hello.adoc
В каталоге src/main/java/hello
вы можете создавать любые классы Java по своему усмотрению. Чтобы обеспечить согласованность с остальной частью этого руководства, создайте эти два класса: HelloWorld.java
и Greeter.java
.
src/main/java/hello/HelloWorld.java
link : initial / src / main / java / hello / HelloWorld . java [ role = include ]
src/main/java/hello/Greeter.java
link : initial / src / main / java / hello / Greeter . java [ role = include ]
Теперь, когда у вас есть проект, готовый к сборке с помощью Maven, следующим шагом будет установка Maven.
Maven можно загрузить в виде zip-файла по адресу https://maven.apache.org/download.cgi. Требуются только двоичные файлы, поэтому найдите ссылку на apache-maven- {version} -bin.zip или apache-maven- {version} -bin.tar.gz.
Загрузив zip-файл, разархивируйте его на свой компьютер. Затем добавьте папку bin на свой путь.
Чтобы протестировать установку Maven, запустите mvn
из командной строки:
МВН -v
Если все пойдет хорошо, вам должна быть предоставлена некоторая информация об установке Maven. Он будет выглядеть примерно так (хотя, возможно, и немного отличаться):
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) Домашняя страница Maven: /home/dsyer/Programs/apache-maven Версия Java: 1.8.0_152, поставщик: Azul Systems, Inc. Домашняя страница Java: /home/dsyer/.sdkman/candidates/java/8u152-zulu/jre Локаль по умолчанию: en_GB, кодировка платформы: UTF-8. Имя ОС: «linux», версия: «4.15.0-36-generic», арка: «amd64», семейство: «unix»
Поздравляем! Теперь у вас установлен Maven.
ИНФОРМАЦИЯ: Возможно, вам захочется рассмотреть возможность использования оболочки Maven, чтобы оградить ваших разработчиков от использования правильной версии Maven или от необходимости ее установки вообще. Проекты, загруженные из Spring Initializr, включают оболочку. Он отображается как скрипт mvnw
на верхнем уровне вашего проекта, который вы запускаете вместо mvn
.
Теперь, когда Maven установлен, вам необходимо создать определение проекта Maven. Проекты Maven определяются с помощью XML-файла с именем pom.xml . Помимо прочего, этот файл содержит имя проекта, версию и зависимости, которые он имеет от внешних библиотек.
Создайте файл с именем pom.xml в корне проекта (т. е. поместите его рядом с папкой src
) и дайте ему следующее содержимое:
pom.xml
link:initial/pom.xml[role=include]
За исключением необязательного элемента
, это самый простой файл pom.xml, необходимый для сборки Java-проекта. Он включает в себя следующие детали конфигурации проекта:
. Версия модели POM (всегда 4.0.0).
. Группа или организация, которой принадлежит проект. Часто выражается как перевернутое доменное имя.
. Имя, которое будет присвоено артефакту библиотеки проекта (например, имя его файла JAR или WAR).
. Версия строящегося проекта.
— Как должен быть упакован проект. По умолчанию для упаковки файлов JAR используется значение «jar». Используйте «war» для упаковки файлов WAR.
Примечание | Когда дело доходит до выбора схемы управления версиями, Spring рекомендует подход семантического управления версиями. |
На этом этапе у вас есть минимальный, но работоспособный проект Maven.
Теперь Maven готов к созданию проекта. Теперь вы можете выполнить несколько целей жизненного цикла сборки с помощью Maven, включая цели по компиляции кода проекта, созданию пакета библиотеки (например, файла JAR) и установке библиотеки в локальном репозитории зависимостей Maven.
Чтобы опробовать сборку, введите в командной строке следующую команду:
компиляция mvn
Это запустит Maven, сообщив ему выполнить цель компиляции . По завершении вы должны найти скомпилированные файлы .class в каталоге target/classes .
Поскольку маловероятно, что вы захотите распространять или работать с файлами .class напрямую, вместо этого вы, вероятно, захотите запустить цель пакета :
пакет mvn
Цель пакета скомпилирует ваш код Java, запустит все тесты и завершит упаковкой кода в файл JAR в целевом каталоге. Имя файла JAR будет основано на
и
проекта. Например, учитывая предыдущий минимальный файл pom.xml , файл JAR будет называться gs-maven-0.1.0.jar .
Чтобы выполнить файл JAR, выполните:
java -jar цель/gs-maven-0.1.0.jar
Примечание | Если вы изменили значение с «jar» на «war», результатом будет файл WAR в целевом каталоге вместо файла JAR. |
Maven также поддерживает репозиторий зависимостей на вашем локальном компьютере (обычно в каталоге .m2/repository в вашем домашнем каталоге) для быстрого доступа к зависимостям проекта. Если вы хотите установить JAR-файл вашего проекта в этот локальный репозиторий, вам следует вызвать цель install
:
установка mvn
Цель установки скомпилирует, протестирует и упакует код вашего проекта, а затем скопирует его в локальный репозиторий зависимостей, чтобы другой проект мог ссылаться на него как на зависимость.
Говоря о зависимостях, теперь пришло время объявить зависимости в сборке Maven.
Простой пример Hello World полностью автономен и не зависит от каких-либо дополнительных библиотек. Однако большинство приложений зависят от внешних библиотек для обработки общих и сложных функций.
Например, предположим, что вы хотите, чтобы приложение не только произнесло «Привет, мир!», но и напечатало текущую дату и время. Хотя вы можете использовать средства даты и времени в собственных библиотеках Java, вы можете сделать вещи более интересными, используя библиотеки времени Joda.
Сначала измените HelloWorld.java, чтобы он выглядел следующим образом:
src/main/java/hello/HelloWorld.java
link : complete / src / main / java / hello / HelloWorld . java [ role = include ]
Здесь HelloWorld
использует класс LocalTime
Joda Time для получения и печати текущего времени.
Если бы вы сейчас запустили mvn compile
для сборки проекта, сборка завершится неудачей, поскольку вы не объявили Joda Time как зависимость компиляции в сборке. Это можно исправить, добавив следующие строки в pom.xml (внутри элемента
):
< dependencies >
link:complete/pom.xml[role=include]
dependencies >
Этот блок XML объявляет список зависимостей проекта. В частности, он объявляет одну зависимость для библиотеки времени Joda. Внутри элемента
координаты зависимости определяются тремя подэлементами:
— группа или организация, к которой принадлежит зависимость.
— необходимая библиотека.
— конкретная требуемая версия библиотеки.
По умолчанию все зависимости рассматриваются как зависимости compile
. То есть они должны быть доступны во время компиляции (и если вы собирали файл WAR, в том числе в папке /WEB-INF/libs WAR). Кроме того, вы можете указать элемент
, чтобы указать одну из следующих областей:
provided
— зависимости, необходимые для компиляции кода проекта, но которые будут предоставлены во время выполнения контейнером, выполняющим код (например, API сервлетов Java).
test
— зависимости, которые используются для компиляции и запуска тестов, но не требуются для сборки или запуска кода времени выполнения проекта.
Теперь, если вы запустите mvn compile
или mvn package
, Maven должен разрешить зависимость Joda Time из центрального репозитория Maven, и сборка будет успешной.
Сначала добавьте JUnit в качестве зависимости к вашему pom.xml в области тестирования:
link:complete/pom.xml[role=include]
Затем создайте такой тестовый пример:
src/test/java/hello/GreeterTest.java
link : complete / src / test / java / hello / GreeterTest . java [ role = include ]
Maven использует плагин под названием Surefire для запуска модульных тестов. Конфигурация этого плагина по умолчанию компилирует и запускает все классы в src/test/java
с именем, соответствующим *Test
. Вы можете запустить тесты в командной строке следующим образом
тест mvn
или просто используйте шаг mvn install
, как мы уже показали выше (существует определение жизненного цикла, в котором «тест» включен как этап «установки»).
Вот готовый файл pom.xml
:
pom.xml
link:complete/pom.xml[role=include]
Примечание | Завершенный файл pom.xml использует плагин Maven Shade для простого удобства создания исполняемого файла JAR. В этом руководстве основное внимание уделяется началу работы с Maven, а не использованию этого конкретного плагина. |
Поздравляем! Вы создали простое, но эффективное определение проекта Maven для создания проектов Java.
Следующие руководства также могут быть полезны:
Создание проектов Java с помощью Gradle
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/footer.adoc