Сборка проекта Java Maven пошаговое руководство

Как собрать проект java maven

Как собрать проект java maven

Maven обеспечивает стандартизированную структуру сборки для Java-приложений и автоматизирует управление зависимостями. Процесс начинается с установки JDK версии не ниже 17 и корректной настройки переменных окружения JAVA_HOME и MAVEN_HOME. Проверка командой mvn -v подтверждает готовность инструментов.

Для инициализации проекта используется команда mvn archetype:generate, позволяющая выбрать подходящий шаблон, например maven-archetype-quickstart. Важно задать уникальные значения groupId, artifactId и version, чтобы избежать конфликтов при последующих релизах.

Файл pom.xml определяет все зависимости, плагины и цели сборки. Рекомендуется фиксировать конкретные версии библиотек и использовать центральный репозиторий Maven Central для воспроизводимости процесса. Добавление плагина maven-compiler-plugin с указанием параметров source и target гарантирует совместимость исходного кода с выбранной версией Java.

Сборка выполняется командой mvn clean package, которая очищает предыдущие артефакты и создаёт итоговый JAR или WAR-файл в каталоге target. Для ускорения процесса на сервере непрерывной интеграции рекомендуется использовать локальный кэш репозитория и опцию -T для параллельной компиляции.

Установка и настройка Apache Maven в локальной среде

Установка и настройка Apache Maven в локальной среде

1. Загрузка дистрибутива: перейдите на официальный сайт https://maven.apache.org/download.cgi, выберите актуальную версию Binary zip archive, скачайте архив и распакуйте его в каталог без пробелов, например C:\Tools\maven или /opt/maven.

2. Настройка переменных окружения: добавьте системную переменную MAVEN_HOME с путём к распакованной папке Maven. Включите путь %MAVEN_HOME%\bin (Windows) или $MAVEN_HOME/bin (Linux/macOS) в переменную PATH, чтобы команда mvn была доступна в терминале.

3. Проверка установки: откройте командную строку и выполните mvn -v. Отобразятся версии Maven, Java и данные о Java-поставщике. Несовпадение версий JDK или отсутствие переменной PATH указывает на некорректную конфигурацию.

4. Конфигурация settings.xml: файл conf/settings.xml позволяет задать локальный репозиторий, зеркала репозиториев, прокси и профили сборки. Для хранения зависимостей в отдельном каталоге укажите, например: <localRepository>/data/maven/repo</localRepository>.

5. Обновление и поддержка: при смене версии Maven замените каталог установки и обновите переменные окружения. После обновления выполните mvn -v для контроля корректности.

Создание нового проекта с помощью архетипа Maven

Создание нового проекта с помощью архетипа Maven

Для генерации структуры проекта используйте команду:

mvn archetype:generate -DgroupId=com.example.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

groupId определяет уникальный идентификатор организации или пакета, обычно в формате обратного домена. artifactId задаёт имя артефакта, которое станет именем итогового JAR или WAR. Параметр archetypeArtifactId выбирает шаблон проекта, например maven-archetype-quickstart для консольного приложения. Флаг interactiveMode=false отключает интерактивные запросы и позволяет использовать значения напрямую.

После выполнения команды Maven создаёт каталог с именем артефакта, включает стандартную иерархию src/main/java и src/test/java, файл pom.xml и пример исходного кода. Для проверки структуры выполните tree my-app или откройте проект в IDE.

Чтобы выбрать другой архетип, выполните предварительно mvn archetype:generate без параметров и найдите нужный идентификатор в списке, затем повторите генерацию с выбранным шаблоном.

Подключение зависимостей в файле pom.xml

Подключение зависимостей в файле pom.xml

Файл pom.xml управляет версиями библиотек через секцию <dependencies>. Каждая зависимость описывается внутри <dependency> с обязательными элементами: <groupId> – идентификатор организации или проекта, <artifactId> – имя артефакта, <version> – конкретная версия.

Пример минимальной записи для подключения JUnit 5:

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter</artifactId>
  <version>5.10.0</version>
  <scope>test</scope>
</dependency>

Использование <scope> позволяет ограничить область применения зависимости: compile для основных модулей, test для тестов, provided если библиотека будет предоставлена средой выполнения, runtime для зависимостей, необходимых только при запуске.

Для контроля версий и исключения конфликтов применяйте секцию <dependencyManagement>. Здесь фиксируются версии, которые затем наследуются в дочерних модулях без явного указания номера.

При работе с большими проектами добавляйте репозитории в <repositories>, если библиотека отсутствует в центральном хранилище Maven. Указывайте URL, id и при необходимости учетные данные.

Рекомендуется явно задавать версии всех зависимостей и регулярно выполнять команду mvn dependency:tree для анализа цепочки и выявления дубликатов.

Компиляция исходного кода через команду mvn compile

Команда mvn compile запускает фазу compile жизненного цикла Maven, преобразуя исходные файлы Java из каталога src/main/java в байт-код. Скомпилированные классы сохраняются в директории target/classes.

Перед выполнением убедитесь, что в pom.xml корректно указана версия JDK в секции maven-compiler-plugin, например:

<configuration><source>17</source><target>17</target></configuration>

Запустите компиляцию из корневого каталога проекта командой:

mvn compile

Для повторной компиляции после изменений очистите директорию target командой mvn clean compile. Это исключает конфликт старых артефактов с новым кодом.

Если проект зависит от внешних библиотек, Maven автоматически загрузит их из репозитория согласно настройкам dependencies в pom.xml, что гарантирует корректную компиляцию без ручной установки JAR-файлов.

Запуск модульных тестов командой mvn test

Запуск модульных тестов командой mvn test

Команда mvn test выполняет фазу тестирования проекта Maven и запускает тесты, расположенные в каталоге src/test/java. По умолчанию применяются фреймворки JUnit или TestNG, если они добавлены в зависимости pom.xml.

  • Все тестовые классы должны следовать шаблону имени *Test.java, иначе их нужно указать вручную в конфигурации плагина Surefire.
  • Параметр -Dtest=ИмяКласса позволяет запускать конкретный класс, пример: mvn test -Dtest=UserServiceTest.
  • Для запуска отдельных методов используйте -Dtest=Класс#метод, например mvn test -Dtest=UserServiceTest#shouldSaveUser.
  • Опция -DskipTests компилирует тесты без их выполнения: mvn install -DskipTests.
  • Опция -Dmaven.test.failure.ignore=true продолжает сборку даже при неудачных тестах.

Рекомендуется явно фиксировать версии плагина maven-surefire-plugin в pom.xml для стабильного поведения. Пример конфигурации:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0</version>
</plugin>

Перед запуском убедитесь, что зависимости для тестов указаны с областью test, иначе Maven не сможет их загрузить.

Формирование итогового JAR файла с использованием mvn package

Формирование итогового JAR файла с использованием mvn package

Для создания итогового JAR файла необходимо выполнить команду:

mvn package

Она компилирует исходный код, выполняет тесты и формирует артефакт в папке target. Рекомендуется проверить, что в pom.xml указаны корректные значения для следующих тегов:

Тег Назначение
<groupId> Уникальный идентификатор организации или проекта
<artifactId> Название проекта, используемое при формировании имени JAR
<version> Версия проекта, отражается в имени JAR файла
<packaging> Тип упаковки: jar, war или другой
<mainClass> Полный путь к классу с методом main, указывается в плагине maven-jar-plugin

После выполнения mvn package JAR файл формируется по пути:

target/<artifactId>-<version>.jar

Для включения зависимостей в один исполняемый JAR используется плагин maven-assembly-plugin с конфигурацией:

Параметр Описание
descriptorRefs jar-with-dependencies – добавляет все зависимости в итоговый JAR
finalName Имя итогового JAR без версии, например app

Для сборки с зависимостями выполняется команда:

mvn clean compile assembly:single

В результате формируется JAR в папке target с именем вида:

<artifactId>-<version>-jar-with-dependencies.jar

Важно контролировать размер JAR и исключать лишние зависимости через excludes в конфигурации плагина, чтобы минимизировать артефакт и ускорить запуск приложения.

Для проверки работоспособности итогового JAR выполняют:

java -jar target/<artifactId>-<version>.jar

Если приложение запускается без ошибок, JAR готов к распространению или деплою.

Вопрос-ответ:

Что такое Maven и зачем он нужен в Java-проектах?

Maven — это инструмент для управления проектами и автоматизации сборки Java-приложений. Он позволяет описать структуру проекта, зависимости от внешних библиотек и порядок сборки в едином файле конфигурации. С помощью Maven можно легко получать необходимые библиотеки из центрального репозитория, управлять версиями и стандартизировать процесс компиляции, тестирования и упаковки приложения.

Как создать новый проект с использованием Maven?

Создание проекта начинается с команды Maven для генерации структуры по шаблону. Обычно используют команду mvn archetype:generate, после чего выбирают тип архетипа, указывают имя группы и артефакта. В результате создаётся стандартная структура каталогов с папками для исходного кода, ресурсов и тестов, а также файл pom.xml, в котором будут храниться зависимости и настройки сборки.

Каким образом добавлять зависимости в проект Maven?

Все зависимости указываются в файле pom.xml внутри тега <dependencies>. Для каждой библиотеки необходимо указать группу, имя артефакта и версию. Maven автоматически скачает нужные файлы из центрального репозитория и подключит их к проекту. После добавления зависимости достаточно выполнить команду mvn compile, чтобы она стала доступна в процессе сборки.

Как собрать и запустить проект с Maven?

Для компиляции исходного кода используют команду mvn compile, для запуска тестов — mvn test. Чтобы создать исполняемый пакет, применяют mvn package, который формирует файл JAR или WAR в зависимости от конфигурации проекта. После этого приложение можно запускать через java -jar target/имя_проекта.jar. Maven автоматически учитывает зависимости, указанные в pom.xml, поэтому вручную подключать библиотеки не требуется.

Ссылка на основную публикацию