Apache Maven – установка и настройка
Apache Maven — это инструмент управления проектами и автоматизации сборки с открытым исходным кодом, основанный на концепции объектной модели проекта (POM – Project Object Model), которая в основном используется для развертывания приложений на основе Java, но также может использоваться в проектах, написанных на C#, Ruby и другиех языках программирования.
В этой статье мы объясним, как установить и настроить последнюю версию Apache Maven в системе CentOS 7 (данная инструкция также работает с дистрибутивом RHEL и Fedora).
- Недавно развернутый или существующий экземпляр сервера CentOS 7.
- Java Development Kit (JDK) — Maven 3.3+ требует JDK 1.7 или выше для выполнения.
Установка OpenJDK 8 в CentOS 7
Java Development Kit (JDK) является основным требованием для установки Apache Maven, поэтому сначала установите Java в системе CentOS 7 из репозитория по умолчанию и проверьте версию с помощью следующих команд.
# yum install -y java-1.8.0-openjdk-devel # java -version
Если установка прошла успешно то, вы увидите следующий вывод.
openjdk version "1.8.0_141" OpenJDK Runtime Environment (build 1.8.0_141-b16) OpenJDK 64-Bit Server VM (build 25.141-b16, mixed mode)
Установка Apache Maven в CentOS 7
Далее перейдите на официальную страницу загрузки Apache Maven и загрузите последнюю версию или используйте следующую команду wget, чтобы загрузить ее в домашний каталог maven ‘/usr/local/src’.
# cd /usr/local/src # wget http://www-us.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
Настройка среды Apache Maven
Теперь нам нужно сконфигурировать переменные окружения для предварительно скомпилированных файлов Apache Maven в нашей системе, создав файл конфигурации «maven.sh» в каталоге «/etc/profile.d» .
# cd /etc/profile.d/ # vim maven.sh
Добавьте следующую конфигурацию в файл конфигурации «maven.sh».
# Apache Maven Environment Variables # MAVEN_HOME for Maven 1 — M2_HOME for Maven 2 export M2_HOME=/usr/local/src/apache-maven export PATH=$/bin:$
Теперь сделайте конфигурационный файл «maven.sh» исполняемым, а затем загрузите конфигурацию, выполнив команду «source» .
# chmod +x maven.sh # source /etc/profile.d/maven.sh
Проверка версии Apache Maven
Чтобы проверить установку Apache Maven, выполните следующую команду.
# mvn --version
И вы должны получить вывод, похожий на следующий:
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T19:33:14+01:00) Maven home: /usr/local/src/apache-maven Java version: 9.0.4, vendor: Oracle Corporation, runtime: /opt/java/jdk-9.0.4 Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.17.6-1.el7.elrepo.x86_64", arch: "amd64", family: "unix"
Вот и все! Вы успешно установили Apache Maven 3.5.4 в вашей системе CentOS 7.
Установка maven
Мы уже научились писать маленькие программы, поэтому теперь будем учиться писать большие. Как известно, чем больше и сложнее программа, тем больше за ее разработку платят денег:) И начнем с небольшой предыстории…
С ростом размера программ разработчики столкнулись с двумя новыми для себя обстоятельствами:
- Над одной программой работает большое количество людей.
- Нет такого человека, который бы знал весь код программы.
Очень часто начали возникать ситуации, когда программист фиксил баг в одном месте программы и при этом ломал что-то в другом. В release documentation даже появилась такая шутка:
- Исправили старые баги 🙂
- Добавили новые 🙁
Тогда же придумали два подхода к решению этой проблемы: технический и менеджерский.
Технический подход заключался в том, что программы разбивали на части: библиотеки и модули. Каждый такой модуль был небольшим кирпичиком из которых потом выстраивались большие проекты. Библиотеки же – это такие универсальные компоненты, которые могут использоваться в разных программах.
Менеджерский подход был еще интереснее – они ограничивал количество людей, которые могут работать над одним проектом/библиотекой. Эмпирически даже вывели правило: команда должна быть настолько большой, чтобы «ее можно было накормить двумя пиццами» . Обычно это означает, что если над проектом работает более 8 человек, то его нужно разделить на два проекта.
В сообществе Java-разработчиков популярным стало написание библиотек на все случаи жизни и выкладывание их в общий доступ. Таким образом, Java-программисты могли не писать снова один и тот же код (который зачастую был сыроват и содержал баги), а пользоваться готовыми и проверенными решениями.
Дополнительным стимулом стало то, что язык Java получил большую популярность при написании серверных решений (работал на бэкенде). Во-первых, у серверного ПО более высокие требования к надежности, и использование проверенных временем библиотек всегда предпочтительнее, чем написание своего кода.
Во-вторых, у серверов практически нет ограничений на размер кода. Разработчик мобильного приложения старается впихнуть его в 10 мегабайт, десктопного приложения – в 100 мегабайт. А бэкенд-разработчик на Java может напихать в проект несколько десятков гигабайт библиотек и ему слова никто не скажет 🙂
Это, кстати, не шутка. Легко можно встретить бэкенд-проект из нескольких десятков модулей и с парой сотен библиотек. Вот только описывать (и изменять!) сценарии сборки таких проектов стало чрезвычайно трудно.
И тут появился Maven.
1.2 Знакомство с Maven
- Описание проекта;
- Сценарии сборки проектов;
- Зависимости между библиотеками.
Предшественником Maven’а был Ant, а наследником является Gradle. Но именно Maven развил и довел до совершенства три перечисленных стандарта, а также регламентировал их взаимодействие. Именно он вывел работу Java-сообществ на новый уровень. Давай же посмотрим на него подробнее.
Технически Maven – это специальная программа/сервис, основная цель которой управлять процессом сборки проектов. Ее можно просто скачать в виде архива и распаковать в любую директорию. Специальный установщик для этого не нужен.
Графического интерфейса у нее нет – все команды отдаются ей с помощью консоли. Чтобы еще более комфортно с ней работать, рекомендуется прописать в своей ОС специальные переменные окружения (environment variables).
Так же у Maven есть специальный репозиторий (директория/папка), где он хранит библиотеки, которые используются им при сборке проектов. Тебе нужно будет выбрать какую-нибудь папку на диске и назначить ее в качестве репозитория.
Еще из интересного можно отметить наличие глобального Maven-репозитория для всех библиотек, но об этом расскажем немного позже.
1.3 Загрузка и установка Maven
У Maven есть официальный сайт maven.apache.org. Там очень много документации по проекту, так что, если возникнут сложности или дополнительные вопросы – заходи, не стесняйся.
Также на странице downloads (https://maven.apache.org/download.cgi) можно скачать архив с maven (apache-maven-3.8.5-bin.zip). Распакованный архив займет где-то 10 Мб, хотя для локального maven репозитория со временем потребуется несколько сотен мегабайт памяти.
Maven написан на Java и требует JRE не ниже 7 версии, а также прописанные переменные окружения типа JAVA_HOME.
Просто создай на компьютере папку для Maven, например, d:\devtools , и распакуй в нее архив с Maven. В итоге у тебя должна получиться папка типа d:\devtools\maven\bin , где будут находиться основные бинарные файлы проекта.
1.4 Переменные окружения
После этого нужно добавить путь к папке bin из распакованного архива в переменную среды PATH.
Чтобы установить переменную среды (environment variable) в Windows 10, нужно перейти в Панель управления — Система — Дополнительные параметры системы. Затем нажать “Переменные среды”, найти PATH и выбрать “Изменить”, после чего добавить путь d:\devtools\maven\bin в конец строки. Обрати внимание, путь должен вести именно к папке bin.
В ОС на основе Unix переменную среды можно добавить консольной командной:
export PATH=/opt/apache-maven-3.8.5/bin:$PATH
Если ты все сделал правильно, то в консоли нужно набрать команду: «mvn -v». В ответ ты увидишь что-то типа:
C:\Users\Zapp>mvn -v Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200) Maven home: T:\apache-maven-3.0.5\bin\.. Java version: 1.8.0_65, vendor: Oracle Corporation Java home: C:\Program Files\Java\jdk1.8.0_65\jre Default locale: en_US, platform encoding: Cp1251 OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"
1.5 Локальный репозиторий Maven
Также ты можешь задать специальную папку, где Maven будет хранить jar-библиотеки, которые будет использовать при сборке проектов. Такую папку называют – локальный maven репозиторий.
Если такая папка не задана, то Maven создаст ее в домашней директории текущего пользователя. У меня это директория: C:\Users\Zapp\.m2
Папка имеет довольно специфическое имя “.m2”. Хотя пользователей Linux оно не пугает – там это довольно распространенный подход к именованию различных ”репозиториев” и/или любого другого хранилища служебной информации.
Важно! Не располагай Maven в системных папках, так как при работе ему понадобятся права на запись в эти папки, что может вызывать нездоровый интерес антивируса или операционной системы.
Maven до версии 3.5 требовал указать переменную окружения с именем M2_HOME, но теперь это не нужно.
Maven – настройка среды
Maven – это инструмент на основе Java, поэтому самое первое требование – установить JDK на ваш компьютер.
Системные требования
JDK | 1,7 или выше. |
---|---|
объем памяти | Нет минимальных требований. |
Дисковое пространство | Нет минимальных требований. |
Операционная система | Нет минимальных требований. |
Шаг 1. Проверка установки Java на вашем компьютере.
Откройте консоль и выполните следующую команду Java .
Операционные системы | задача | команда |
---|---|---|
Windows | Открытая командная консоль | c: \> Java-версия |
Linux | Открытый командный терминал | $ java-версия |
макинтош | Открытый терминал | машина: ~ Джозеф $ Java-версия |
Давайте проверим вывод для всех операционных систем –
Java (TM) SE Runtime Environment (сборка 1.7.0_60-b19)
Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 24.60-b09, смешанный режим)
Java (TM) SE Runtime Environment (сборка 1.7.0_60-b19)
Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 24.60-b09, смешанный режим)
Java (TM) SE Runtime Environment (сборка 1.7.0_60-b19)
Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 24.60-b09, смешанный режим)
Java (TM) SE Runtime Environment (сборка 1.7.0_60-b19)
Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 24.60-b09, смешанный режим)
Java (TM) SE Runtime Environment (сборка 1.7.0_60-b19)
Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 24.60-b09, смешанный режим)
Java (TM) SE Runtime Environment (сборка 1.7.0_60-b19)
Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 24.60-b09, смешанный режим)
Если у вас не установлена Java, установите Java Software Development Kit (SDK) по адресу https://www.oracle.com/technetwork/java/javase/downloads/index.html . Мы принимаем Java 1.7.0.60 в качестве установленной версии для этого урока.
Шаг 2 – Установите JAVA Environment
Установите переменную среды JAVA_HOME, чтобы она указывала на местоположение базовой директории, где установлена Java на вашем компьютере. Например –
Операционные системы | Выход |
---|---|
Windows | Установите переменную среды JAVA_HOME в C: \ Program Files \ Java \ jdk1.7.0_60 |
Linux | экспорт JAVA_HOME = / usr / local / java-current |
макинтош | export JAVA_HOME = / Библиотека / Java / Главная |
Добавьте расположение компилятора Java в системный путь.
Операционные системы | Выход |
---|---|
Windows | Добавьте строку «; C: \ Program Files \ Java \ jdk1.7.0.60 \ bin» в конец системной переменной Path. |
Linux | экспорт PATH = $ PATH: $ JAVA_HOME / bin / |
макинтош | не требуется |
Проверьте установку Java с помощью команды java -version, как описано выше.
Шаг 3 – Скачать архив Maven
Операционные системы | Название архива |
---|---|
Windows | apache-maven-3.3.1-bin.zip |
Linux | апач-Maven-3.3.1-bin.tar.gz |
макинтош | апач-Maven-3.3.1-bin.tar.gz |
Шаг 4 – Распакуйте архив Maven
Распакуйте архив в каталог, в который вы хотите установить Maven 3.3.1. Подкаталог apache-maven-3.3.1 будет создан из архива.
Операционные системы | Местоположение (может отличаться в зависимости от вашей установки) |
---|---|
Windows | C: \ Program Files \ Apache Software Foundation \ apache-maven-3.3.1 |
Linux | / USR / местные / Apache-Maven |
макинтош | / USR / местные / Apache-Maven |
Шаг 5 – Установите переменные среды Maven
Добавьте M2_HOME, M2, MAVEN_OPTS к переменным среды.
Установите переменные среды, используя системные свойства.
M2_HOME = C: \ Program Files \ Apache Software Foundation \ apache-maven-3.3.1 M2 =% M2_HOME% \ bin MAVEN_OPTS = -Xms256m -Xmx512m
Откройте командный терминал и установите переменные среды.
export M2_HOME = / usr / local / apache-maven / apache-maven-3.3.1 export M2 = $ M2_HOME / bin
экспорт MAVEN_OPTS = -Xms256m -Xmx512m
Откройте командный терминал и установите переменные среды.
export M2_HOME = / usr / local / apache-maven / apache-maven-3.3.1
экспорт M2 = $ M2_HOME / bin
экспорт MAVEN_OPTS = -Xms256m -Xmx512m
Установите переменные среды, используя системные свойства.
M2_HOME = C: \ Program Files \ Apache Software Foundation \ apache-maven-3.3.1 M2 =% M2_HOME% \ bin MAVEN_OPTS = -Xms256m -Xmx512m
Откройте командный терминал и установите переменные среды.
export M2_HOME = / usr / local / apache-maven / apache-maven-3.3.1 export M2 = $ M2_HOME / bin
экспорт MAVEN_OPTS = -Xms256m -Xmx512m
Откройте командный терминал и установите переменные среды.
export M2_HOME = / usr / local / apache-maven / apache-maven-3.3.1
экспорт M2 = $ M2_HOME / bin
экспорт MAVEN_OPTS = -Xms256m -Xmx512m
Шаг 6 – добавьте каталог Maven bin в системный путь
Теперь добавьте переменную M2 к системному пути.
Операционные системы | Выход |
---|---|
Windows | Добавьте строку;% M2% в конец системной переменной Path. |
Linux | экспорт PATH = $ M2: $ PATH |
макинтош | экспорт PATH = $ M2: $ PATH |
Шаг 7 – Проверьте установку Maven
Теперь откройте консоль и выполните следующую команду mvn .
Операционные системы | задача | команда |
---|---|---|
Windows | Открытая командная консоль | c: \> mvn –version |
Linux | Открытый командный терминал | $ mvn –version |
макинтош | Открытый терминал | машина: ~ Джозеф $ mvn –version |
Наконец, проверьте вывод приведенных выше команд, который должен быть следующим:
Apache Maven 3.3.1 (r801777; 2009-08-07 00: 46: 01 + 0530)
Версия Java: 1.7.0_60
Дом Java: C: \ Program Files \ Java \ jdk1.7.0_60 \ jre
Apache Maven 3.3.1 (r801777; 2009-08-07 00: 46: 01 + 0530)
Версия Java: 1.7.0_60
Дом Java: C: \ Program Files \ Java \ jdk1.7.0_60 \ jre
Apache Maven 3.3.1 (r801777; 2009-08-07 00: 46: 01 + 0530)
Версия Java: 1.7.0_60
Дом Java: C: \ Program Files \ Java \ jdk1.7.0_60 \ jre
Основы Maven: что это такое и как работает
Собираем проект на Java быстро, без регистрации и СМС.
Иллюстрация: Lip Kee / Apache Software Foundation / Wikimedia Commons / John Fowler / Maksym Ostrozhynskyy / Brett Wharton / Ben Kolde / Unsplash / Дима Руденок для Skillbox Media
Богдан Островерхов
Пишет о сетях, инструментах для разработчиков и языках программирования. Любит готовить, играть в инди‑игры и программировать на Python.
Если спросить у Java-разработчика, кто его лучший друг, то, скорее всего, он расскажет про Apache Maven. Это фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM (Project Object Model).
Пока что звучит сложно, но в этой статье мы разберёмся в основах работы со сборщиком проектов и заглянем в его сердце — файл pom.xml.
Что вы узнаете про Maven:
- зачем он нужен и есть ли у него аналоги;
- как его правильно установить на компьютер и можно ли обойтись без этого;
- как его настроить и собрать свой первый проект;
- зачем ему репозитории и какими они бывают.
Что такое Maven
Maven — это инструмент для автоматической сборки проектов на Java и других языках программирования. Он помогает разработчикам правильно подключить библиотеки и фреймворки, управлять их версиями, выстроить структуру проекта и составить к нему документацию.
Например, чтобы собрать приложение для управления базами данных на Java, нам понадобятся фреймворки Spring и Hibernate, библиотека JUnit для модульного тестирования и сама база данных. Всё это можно собрать в одном проекте вручную, но могут быть трудности из-за большого числа зависимостей. Здесь на помощь разработчикам приходит Maven. Он автоматически добавит эти или другие зависимости в проект и соберёт его в исполняемый файл.
Maven — не единственный сборщик проектов. Некоторые разработчики используют его аналоги — Gradle и Ant. Но именно Maven сегодня — золотой стандарт в индустрии.
Установка Maven
Maven можно установить вручную или воспользоваться IDE с предустановленным сборщиком. Второй вариант удобнее и быстрее, но начнём мы с обычной установки в операционную систему.
Важно! Чтобы работать с Java, у вас на компьютере должен быть установлен и настроен JDK. Мы уже писали, как это сделать правильно.
Установка Maven вручную
Скачайте архив со сборщиком для своей операционной системы с официального сайта Apache Maven и распакуйте его. Лучше всего создать для этого отдельную папку, так как путь к ней нам понадобится позже.
Если у вас Linux, то установку можно запустить через командную строку:
В открывшемся окне нажмите кнопку Создать и укажите полный адрес до папки bin из распакованного архива Maven:
Проверьте настройку переменных среды. Для этого зайдите в командную строку и введите mvn -v. Если Maven установлен, то появится информация о его версии:
Linux/Mac
Откройте в текстовом редакторе файл ~/.bashrc или ~/.bash_profile в Linux или .zshrc в macOS. Файл находится в домашней директории текущего пользователя . Если файла нет, создайте его и впишите:
Для Mac в последней строке будет указано family: «mac».
Использование Maven в IntelliJ IDEA
Для работы с Maven мы будем использовать IntelliJ IDEA. Это удобная среда разработки, в которой сборщик проектов установлен из коробки.
Настройки Maven в IDE можно найти в правой части рабочей области после создания проекта на Java:
Настройка Maven и сборка проекта
Начнём работу с создания шаблона проекта. Среда разработки и здесь сэкономит нам время, так как самостоятельно пропишет необходимые параметры.
Создайте новый проект:
Программа предложит выбрать Maven Archetype в качестве шаблона сборки. Кликните на него и в окне преднастроек выберите Archetype quickstart. Нажмите Create:
В окне проекта вы увидите, как Maven зашёл в репозитории и начал что-то скачивать, — это нормально:
Слева на экране показана структура проекта. Нам нужен класс App.java, в котором находится метод main. Чтобы найти его, откройте папку src, затем main и java. Внутри App.java хранится небольшой фрагмент кода:
Всё сработало как надо — появился текст Hello World!:
Поздравляем! Вы собрали первый проект в Maven.
Репозитории Maven
Maven умеет не только выводить что-то в консоль. Его мощь — в библиотеках, которые можно подключить к проекту. Для этого используются репозитории.
Репозитории Maven — это хранилища, где находятся библиотеки. Что-то вроде Google Play или App Store, но для сборщика проектов. Репозитории бывают локальными и удалёнными. Последние делятся на общедоступные и сторонние.
Локальный репозиторий расположен на вашем компьютере. Там Maven хранит библиотеки, которые вы используете в своих проектах.
Когда вы загружаете библиотеку в первый раз, Maven сохраняет её в локальном репозитории. Все последующие проекты используют уже загруженную версию, что позволяет сэкономить время на её скачивании.
Общедоступный, или центральный, репозиторий — это хранилище библиотек, предоставляемых Apache Maven. Именно к нему обращается сборщик по умолчанию.
Сторонние репозитории предоставляют какие-либо организации или сообщества. Чтобы Maven искал библиотеки именно в них, необходимо это настроить.
Библиотеки могут быть в состоянии снапшота (SNAPSHOT) или релиза (release). Снапшоты — это версии библиотек в разработке. Они могут меняться внутри без изменения номера версии. Это может привести к проблемам, так как версия библиотеки остаётся прежней, но её функциональность может измениться. Релизы — стабильные версии библиотек, которые не изменяются, а выпускаются под конкретным номером. Лучше всего использовать именно их.
Настройки работы Maven с репозиториями прописаны в settings.xml. Сам файл находится в папке conf вашей директории с Maven:
Откройте settings.xml в любом текстовом редакторе. Там много кода, но нам нужна секция . По умолчанию она выглядит так:
mirrors>mirrorId repositoryId Human Readable Name for this Mirror. http://my.repository.com/repo/path --> mirror> id>maven-default-http-blocker id> mirrorOf>external:http:* mirrorOf> name>Pseudo repository to mirror external repositories initially using HTTP. name> url>http://0.0.0.0/ url> blocked>true blocked> mirror> mirrors>
id — уникальный идентификатор для данного зеркала . В этом случае ID установлен как maven-default-http-blocker. Такая конфигурация блокирует внешние репозитории, использующие протокол HTTP. Это полезно, когда мы хотим пользоваться только локальными репозиториями.
mirrorOf — этот элемент указывает, для каких репозиториев будет применяться зеркало. У нас прописан шаблон external:http:*, который означает, что сборщик будет блокировать все внешние репозитории, использующие протокол HTTP, без каких-либо ограничений.
name — имя и описание для зеркала.
url — URL зеркала. Здесь указан фиктивный URL http://0.0.0.0/ в качестве заглушки.
blocked — определяет, блокируется указанное зеркало или нет. У нас установлено значение true, то есть доступ к внешним репозиториям заблокирован.
Если мы хотим, чтобы Maven искал библиотеки в других репозиториях, то должны добавить в блок по шаблону:
mirror> id>external-repos id> url>https://repo.example.com/maven2 url> mirrorOf>external:* mirrorOf> mirror>
В url впишите адрес желаемого репозитория. Теперь Maven сможет его найти.
Что запомнить
Резюмируем всё, что мы узнали про сборщик проектов:
- Maven облегчает рутинные задачи по сборке проектов на Java и некоторых других языках программирования.
- Главная сила Maven — это pom-файлы, позволяющие точно настроить сборку проекта с учётом всех используемых библиотек и фреймворков.
- Для хранения библиотек используются репозитории. Они могут быть локальными, то есть располагаться на вашем компьютере, и удалёнными. Это позволяет гибко настроить доступ к библиотекам и использовать нужные нам версии.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!
Читайте также:
- Абстрактные классы в Java и их отличия от интерфейсов
- Тест. Какой язык создадите вы — Java или Python?
- HashMap в Java: что это такое и зачем нужно
«Зеркало» здесь — дублёр основного ресурса, позволяющий снизить на него нагрузку.
В macOS у пользователя User домашняя директория находится по адресу: /Users/User