Maven что это за программа

Apache Maven — основы

После публикации топика о Maven в комментариях возникли вопросы о том, как начать с ним работать, с чего начать, как составлять файлы pom.xml, откуда брать плагины и т.п. Данный топик будет своего рода getting started или f.a.q.

Терминология

Как в любой системе, в Maven, есть свой набор терминов и понятий.

Вся структура проекта описывается в файле pom.xml (POM – Project Object Model), который должен находиться в корневой папке проекта. Ключевым понятием Maven является артефакт — это, по сути, любая библиотека, хранящаяся в репозитории. Это может быть какая-то зависимость или плагин.

Зависимости — это те библиотеки, которые непосредственно используются в вашем проекте для компиляции кода или его тестирования.

Плагины же используются самим Maven’ом при сборке проекта или для каких-то других целей (деплоймент, создание файлов проекта для Eclipse и др.).

В самом начале работы с Maven, пользователь непременно столкнется с таким понятием как архетип. Архетип — это некая стандартная компоновка файлов и каталогов в проектах различного рода (веб, swing-проекты и прочие). Другими словами, Maven знает, как обычно строятся проекты и в соответствии с архетипом создает структуру каталогов.

Maven все что нужно знать новичку Java программисту.

Как правило, название артефакта состоит из названия группы, собственного названия и версии. К примеру Spring будет иметь вот такое название в среде Maven: org.springframework.spring:2.5.5. Последний домен означает всегда artifactId, все, что перед ним – groupId – хорошо это запомните!

На жизненном цикле останавливаться не буду, так как он хорошо описан в вышеобозначенной статье. А теперь перейдем к практике.

Установка Maven

Последнюю версию всегда можно скачать на странице загрузки на официальном сайте. Просто распаковываем архив в любую директорию. Далее необходимо создать переменную в Path, в которой необходимо указать путь к Maven. Заходим в Win + Pause – Дополнительно – Переменные среды – в верхнем окошке нажимаем Создать, вводим имя M2_HOME и значение допустим “C:apache-maven-2.2.1”.

Далее там же создаем еще одну переменную M2 со значением %M2_HOME%bin. Так же убеждаемся, что есть переменная JAVA_HOME с путем к JDK. Ее значение должно быть примерно таким «c:Program FilesJavajdk1.6.0_10». И наконец в том же окошке создаем/модифицируем переменную Path, в нее необходимо просто написать %M2%, чтобы наша папочка с исполняемым файлом Maven была видна из командной строки. Теперь необходимо проверить работоспособность нашей установки. Для этого заходим в командную строку и вводим команду

mvn –version

Должна появиться информация о версиях Maven, jre и операционной системе, что-то вроде:

Maven version: 2.2.1 Java version: 1.6.0_10 OS name: «windows 2003» version: «5.2» arch: «x86» Family: «windows»

Maven создаст вам локальный репозиторий в вашей личной папке, например в каталоге C:Documents and Settingsusername.m2repository

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

Создание приложения из архетипа

На сайте Maven перечислены наиболее популярные архетипы для приложений, но вы можете легко создать свой или найти более специфичный например здесь.

Итак, допустим нас интересует веб-приложение – находим подходящий архетип, называется он maven-archetype-webapp. В командной строке, в необходимом каталоге выполняем команду Maven:

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

Теперь мы можем лицезреть довольно наглядную структуру каталогов с говорящими названиями java – здесь будут ваши классы, webapp – здесь размещаются странички веб-приложения, resources – различного рода ресурсы в classpath (файлы конфигурации, например), test – юнит-тесты, соответственно и т.п.

Сборка проекта

Здесь все просто – выполняем команду

mvn package
mvn install

в корневом каталоге приложения, там, где находится файл pom.xml. Первая команда скомпилирует ваш проект и поместит его в папку target, а вторая еще и положит его к вам в локальный репозиторий.

Есть полезная функция, наподобие конвеера, то есть можно написать

mvn clean install

и Maven сначала очистит папку target проекта, потом соберет его и положит в репозиторий.

Минимальный набор действий для работы Maven мы изучили, теперь переходим к кастомизации и добавлению зависимостей проекта.

Зависимости и репозитории

Как правило, большинство популярных библиотек находятся в центральном репозитории, поэтому их можно прописывать сразу в раздел dependencies вашего pom-файла. Например чтобы подключить Spring Framework необходимо определить следующую зависимость:

. org.springframework spring 2.5.5

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

Специфические вещи обычно не находятся в центральном репозитории и тогда вам придется указать репозиторий производителя вручную. Для примера добавим зависимость JSF-фреймворка ajax-компонентов JBoss RichFaces.

С зависимостями все просто:

org.richfaces.ui richfaces-ui 3.3.1.GA

А вот репозиторий JBoss теперь необходимо прописать ручками либо в файле settings.xml, который лежит в корне вашего локального репозитория, либо в самом файле pom.xml, в зависимости от того, нужен ли данный репозиторий во всех проектах, либо в каком-то одном конкретном, соответственно:

true false never repository.jboss.com Jboss Repository for Maven http://repository.jboss.com/maven2/ default

Как правило на сайтах крупных проектов пишут всю информацию, необходимую для встраивания их библиотеки в проект на основе Maven, но бывают случаи, когда артефакт приходится искать очень и очень долго. Здесь нам очень сильно может помочь MVNrepository.com — он вам всегда подскажет где может находиться искомая библиотечка. Но если уж и там не нашлось, то из собственного опыта могу посоветовать гуглить « pom.xml». Бывает так, что проекты уже давно закрыты и в репозитории не положены потому что разработчики уже не заботятся об их распространении. Тогда остается один единственный способ – добавить файл в репозиторий вручную командой:

mvn install:install-file -Dfile= -DgroupId= -DartifactId= -Dversion= -Dpackaging=

Последний параметр чаще всего имеет значение jar.

Плагины

Так как плагины являются такими же артефактами, как и зависимости, то они описываются практически так же. Вместо раздела dependencies – plugins, dependency – plugin, repositories – pluginRepositories, repository – pluginRepository.

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

Посмотрим как настроить плагин для создания проекта для Eclipse с использованием WTP ver. 2.0. В раздел plugins нашего pom.xml прописываем следующий плагин:

org.apache.maven.plugins maven-eclipse-plugin 2.0

Теперь идем опять таки в командную строку и выполняем команду

mvn eclipse:eclipse

Ждем пока Maven найдет все библиотеки в репозитории или скачает их и вуаля – теперь наш Maven-проект можно открыть как проект eclipse. При этом библиотеки никуда не копируются как при классическом подходе, а остаются в репозитории и Eclipse делает на них ссылку через свои переменные.

Единого списка всех плагинов естественно не существует, на официальном сайте только есть поддерживаемые плагины непосредственно разработчиками Maven. Однако хотелось бы отметить, что названия плагинов довольно прямолинейны и сделав поиск по ключевым словам «maven tomcat plugin» вы скорее всего обнаружите первой ссылкой плагин для деплоймента проекта в Tomcat.

Собственный репозиторий

К сожалению сам не имею большого опыта настройки репозитория, но могу посоветовать как наиболее простой и распространенный Nexus. За дополнительной информацией следует обратиться на сайт данного проекта.

Однако нельзя оставить без внимания и достойных конкурентов в лице Artifactory и Archiva.

Заключение

Очень надеюсь, что цель данной статьи достигнута – минимальных знаний по Maven должно хватить на работу с не очень большими проектами. Для более серьезных целей очень советую детально изучить maven-compiler-plugin и maven-resource-plugin – они напрямую отвечают за конечную компоновку проекта. Я считаю, что самым главным моментом в обучении Maven является понимание идеологии – Maven описывает конечную структуру проекта, а не пути к ее достижению, в отличие от Ant.
Полезные ссылки
Официальная страница Maven
Документация
Центральный репозиторий
Репозиторий iBiblio
Поиск артефактов по названию
Неплохой форум по Maven
Maven: The Definitive Guide — хорошая книга по Maven

Читайте также:
Zen choice что это за программа на Андроид и нужна ли она

Источник: habr.com

Введение в Maven — простой инструмент для автоматизации сборки

Введение в Maven - простой инструмент для автоматизации сборки

Мы начнем с быстрого вступления, а затем перечислим преимущества его использования. После всего этого мы увидим процесс его установки, а затем несколько технических терминов, которые необходимы новичку. Итак, начнем!

Что такое Maven?

Apache Maven — это программное обеспечение для управления и сборки проектов. Он основан на концепции объектной модели проекта (POM). Maven может управлять сборкой проекта, составлением отчетов и документацией из центральной части информации.

Apache Maven — это инструмент для сборки, и он выполняет эту задачу точно так же, как например Ant, который тоже является выдающимся инструментом для сборки. Это программный инструмент управления проектами, который дает новую концепцию объектной модели проекта (POM).

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

Apahe Maven

Зачем используется Maven?

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

Он работает на многих этапах, таких как добавление jar-файлов в библиотеку проекта, создание отчетов и выполнение тестовых примеров Junits, создание файлов Jar, War, Ear для проекта и многое другое.

Очень важным аспектом Maven является назначение хранилищ для управления файлами JAR.

Maven может также использоваться для создания и управления проектами, написанными на таких языках, как C #, ruby ​​и других.

Давайте посмотрим на следующие преимущества Maven.

Maven

  • Его конфигурация очень минимальная
  • Имеет управляющие зависимости
  • Автоматизация всего процесса
  • Он имеет возможность запускать JUnit и другие интеграционные тесты
  • Возможность управление плагинами, тестирование и разработка
  • Стандартная и унифицированная инфраструктура среди проектов

Настройка среды Maven

Установка Maven включает в себя следующие шаги:

  • Проверьте, установлена ​​ли в системе Java. если нет то установите его
  • Проверьте, установлена ​​ли переменная среды Java. Если нет, то установите его
  • Скачайте Maven
  • Распакуйте архив maven в одной месте системы
  • Теперь добавьте папку bin из каталога apache-maven-3.6.3 в переменную среды PATH и системную переменную.
  • Откройте командную строку и выполните команду mvn -v, чтобы подтвердить установку.

Чтобы получить подробные инструкции по установке, следуйте приведенному ниже руководству на YouTube по настройке среды Maven, поскольку мы не хотим, чтобы эта статья была простой для чтения и скучной.

Данное руководство для начинающих, должно включать технические термины, связанные с MAVEN. Вот некоторые из них, которые очень важны:

Maven локальный репозиторий

Maven Local Repository — это набор, в котором Maven хранит все файлы jar проекта, библиотеки или зависимости. По умолчанию имя папки установлено на .m2, а путь находиться в LibrariesDocuments.m2.

Maven Центральный репозиторий

Центральный репозиторий Maven является местоположением по умолчанию для загрузки Maven всех библиотек зависимостей проекта для использования. Для любой библиотеки, участвующей в проекте, Maven сначала просматривает папку .m2 Локального репозитория, и если он не находит нужную библиотеку, он ищет в Центральном репозитории и загружает библиотеку в локальный репозиторий.

Источник: itgap.ru

Maven что это за программа

Apache Maven (Часть 1): Основы
Apache Maven
(Часть 1): Основы

Apache Maven (обычно называют просто Maven) — это фреймворк по автоматизации и управлению сборкой Java-приложений. Слово Maven взято из языка идиш, примерный перевод которого можно выразить как «собиратель знания» (accumulator of knowledge), «эксперт».

Apache Maven, по большей части, написан на Java. Это проект с открытым исходным кодом, который следует философии «Соглашение важнее конфигурации» (convention over configuration).

1. Основные возможности Maven
Наиболее важные возможности Maven:

  • Простая настройка проекта в соответствии с лучшими практиками
  • Управление зависимостями, включая автоматическое обновление
  • Возможность работать с несколькими проектами одновременно
  • Большое хранилище библиотек и метаданных для использования «из коробки»
  • Расширяемость с возможностью написания своих плагинов
  • Создание сайта и PDF с документацией
  • Проверка корректности структуры проекта
  • Компиляция исходного кода, отображение ошибок/предупреждений
  • Тестирование проекта на основе уже написанных тестов
  • Упаковка скомпилированного кода в артефакты (например, .jar, .war, .ear, .zip-архивы и многое другое)
  • Упаковка исходного кода в загружаемые архивы/артефакты
  • Установка упакованных артефактов на сервер для последующего развертывания (деплоя) или в репозиторий для распространения
  • Создание отчетов по тестированию
  • Сообщение об удачной/неудачной сборке проекта

2. Принцип «Соглашение важнее конфигурации»

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

В Apache Maven данный принцип проявляется в том, что Maven предоставляет разумные настройки (готовые шаблоны) по умолчанию для управления сборкой проекта. Если они не подходят, то разработчик может переопределить их на свои.

Одной из таких настроек по умолчанию, например, является структура каталогов в Maven-проекте (подробнее о стандартных каталогах):

В этой структуре исходный код, в соответствии с соглашением, располагается в подкаталоге src/main/java. В каталоге test находится код тестов.

Аналогичным образом ресурсы, необходимые для приложения или его тестирования, находятся в каталоге resources.

Это всего лишь один из множества примеров стандартизации в соответствии с философией «Соглашение важнее конфигурации».

3. Как работает Maven?

Maven использует объектную модель проекта (Project Object Model, POM) для управления проектом. Для описания модели обычно используется XML-документ, но возможны и другие форматы.

Рисунок, иллюстрирующий типичную работу Maven
4. Что такое Объектная модель проекта (POM)?

POM — это очень полезная и удобная вещь, которая описывает то, как будет собираться проект. Этот файл (обычно pom.xml) состоит из следующих частей:

  • Project coordinates (координаты проекта) — однозначно идентифицируемый набор свойств, с помощью которых артефакты проекта могут быть использованы в другом месте
  • Dependencies (зависимости) — библиотеки и код, необходимые для сборки проекта
  • Plugins (плагины) — вспомогательные инструменты при сборке проекта
  • Properties (свойства) — общие значения, необходимые проекту
  • Inheritance details (детали наследования) — возможность создания иерархии для повторно используемых компонентов POM
  • Profiles (профили) — альтернативные пути сборки проекта, разбитые по профилям

4.1. Как Maven взаимодействует с POM?

Maven использует содержимое в POM для управления сборкой. Однако он также имеет стандартные значения по умолчанию. Таким образом, Maven несет ответственность за объединение значений по умолчанию и применение переопределений и дополнений, обнаруженных в pom-файле проекта.

Благодаря этому мы получаем:

  • совокупность шагов выполнения, свойств и профилей
  • контент, который Maven может выполнить для проекта
  • исчерпывающий набор зависимостей и плагинов, необходимых для такого выполнения
  • определение любых переходных зависимостей (например, зависимости зависимостей)
  • разрешение конфликтов с точки зрения версий зависимостей

4.2. Как Maven собирает POM?

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

Теперь пройдемся по существующим слоям:
Внутренние настройки Maven

Этот слой находится в коде Maven. Если не предполагается править его исходник, то эти значения по умолчанию можно считать неизменяемыми.

Maven Super POM

Этот супер-POM также является частью кода Maven. Опять же, если цель не состоит в том, чтобы изменить исходник, то также можно считать, что Super POM является неизменяемым.

Глобальные настройки Maven

После установки Maven создает структуру каталогов. Одним из базовых каталогов является conf, содержащий файл глобальных настроек settings.xml. Поскольку этот файл существует на локальном компьютере, он доступен для редактирования. Как правило, любые параметры, которые применяются ко всем проектам, управляемым на конкретном компьютере, прописываются в этом глобальном settings.xml. Например, в этот файл входят такие параметры, как настройки прокси-сервера, URL-адреса корпоративных серверов, зеркала и т. д. В любом случае его не следует часто изменять.

Расположение:
Unix/MacOS: /conf/settings.xml
Windows:
Пользовательские настройки Maven

Аналогично глобальным настройкам, но в другом месте, можно создать файл пользовательских настроек. Этот файл также называется settings.xml, но его местоположение находится в папке пользователя (user home) в каталоге .m2 (скрытая папка). Данный файл предназначен для настройки любых параметров, применимых к проектам. Управляется конкретным пользователем (на данном компьютере может быть несколько пользователей). Это могут быть имена пользователей и пароли для подключения к сети, параметры репозитория и т. д.

Читайте также:
Программа тайм трекер что это

Расположение:
Unix/MacOS: /.m2/settings.xml
Windows: .m2settings.xml
Родительские POM’ы / спецификации

Maven позволяет наследовать содержимое от родительского POM и характеристики версий из pom-спецификации. Обычно родительские POM содержат повторно используемые зависимости, плагины и свойства, используемые POM проекта. POM-спецификации (Bill-of-Material — BOM) — это специализированный POM, который позволяет группировать версии зависимостей.

Использование POM-спецификации избавляет разработчика от необходимости проверять совместимость различных зависимостей. Изменение любого из них возможно, если есть необходимость и право на изменение. Поскольку изменения в любом из них могут повлиять на несколько других проектов, для изменений рекомендуется соответствующее увеличение версий и их пересмотр.

Расположение:
Различные места на компьютере или в каком-либо репозитории.
Project POM

Это Project Object Model для проекта. В этом месте подробно описаны инструкции Maven для конкретного проекта.

Типичное содержимое включает в себя: уникальный набор координат, используемых для идентификации проекта; название и описание проекта; набор разработчиков, связанных с проектом; любые сведения об управлении системой контроля версиями; все зависимости и плагины для конкретного проекта; любые профили, которые позволяют поочередно выполнять Maven в этом проекте и так далее. Все это будет описано в последующих статьях. Файл, содержащий этот POM, называется pom.xml, но можно использовать и другие имена. Если используется альтернативное имя, то исполняемому файлу Maven необходимо будет указать имя файла для выполнения.

Расположение:
Unix/MacOS: $PROJECT/pom.xml
Windows: $PROJECTpom.xml
6. Координаты зависимостей

Существуют сотни или тысячи проектов, которые собраны в артефакты. Некоторые из этих артефактов потенциально могут быть использованы в текущем проекте в качестве библиотек. Например, проект может зависеть от логирования или библиотеки JSON. В центральном репозитории можно разместить множество артефактов зависимостей. Основное такое хранилище Maven называется Maven Central.

Существует также множество других подобных хранилищ.

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

Что такое координаты Maven?

Это способ уникальной идентификации артефакта. Существуют три основные координаты, которые используются для идентификации артефакта.

groupId

Классификация по группе, обычно относящаяся к организации или компании и может иметь общее название для одного или нескольких проектов. groupId обычно описан через точку (аналогично имени пакета Java). Каждый элемент в этой точечной нотации соответствует каталогу в древовидной структуре хранилища. Например, groupId в org.apache.commons соответствует $REPO/org/apache/commons.

Наличие точечной нотации не является обязательным требованием (хотя очень рекомендуется).
artifactId

Это точное название проекта. Среди множества проектов, существующих в группе, artifactId может однозначно идентифицировать артефакт. Если название состоит из нескольких слов, то в описании artifactId оно разделяется дефисами. В идеале, имена должны быть небольшой длины.

Артефакт проявляется в виде подкаталога в дереве каталогов, представленного groupId. Например, artifactId commons-lang3 в groupId org.apache.commons сообщает, что артефакт можно найти в разделе: $REPO/org/apache/commons/commons-lang3/.

version

Это идентификатор, который отслеживает уникальные сборки артефакта. Версия — это строка, созданная разработчиками проекта для определения набора изменений, внесенных в предыдущее создание артефакта того же проекта. Настоятельно рекомендуется следовать схемам семантического управления версиями, хотя это не обязательно.

Версия проявляется в виде подкаталога в дереве каталогов, который состоит из groupId и artifactId. Например, version 3.1.0 для artifactId commons-lang3 в groupId org.apache.commons обозначает, что артефакт находится в $REPO/org/apache/commons/commons-lang3/3.1.0/.

Теперь немного подробнее про версии.
Схемы номеров версий

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

Цикл разработки

Во время разработки продукта может быть создано несколько артефактов, которые можно протестировать, проверить и т. д. Этот цикл разработки обычно создает артефакты с той же версией, что и предыдущие сборки на том же этапе. Основанием для этого утверждения является то, что релиз все еще находится в экспериментальном, бета- или альфа-состоянии, но может претерпеть дополнительные изменения. Однако трудно заставить все проекты постоянно обновлять свои собственные POM для каждой такой сборки. В этой проблеме помогает создание SNAPSHOT’ов (снимков).

Например, для проекта A версии 1.0.0 команда разработчиков может создать несколько версий SNAPSHOT’ов с версией 1.0.0-SNAPSHOT в течение определенного периода времени. Этот суффикс подразумевает, что номер версии в конце должен быть 1.0.0, однако при каждой сборке будут создаваться новые артефакты, которые заменят предыдущий SNAPSHOT. Более новый SNAPSHOT может заменить существующий SNAPSHOT артефакта в репозитории Maven, поэтому пользовательские проекты могут безопасно получить последнюю версию SNAPSHOT’а. SNAPSHOT — это изменяемая версия проекта, которая может быть объявлена как зависимость в пользовательских проектах.

Готово для выпуска в продакшн (Production-Ready)

После завершения всего тестирования POM больше не нуждается в суффиксе SNAPSHOT и может создать готовую к продакшену неизменяемую версию проекта. Как только она будет помещена в репозиторий, в нее нельзя вносить никаких дальнейших изменений (Maven не позволяет это делать по своим внутренним правилам). Обычно можно найти другие готовые к производству суффиксы: 1.0.0-GA (общая доступность) или 1.0.0-RELEASE (выпущенный артефакт) или 1.0.0-FINAL и т. д. Опять же, строки версий вообще не имеют значения для Maven.

Источник: topjava.ru

Краткое знакомство с Maven

Обложка: Краткое знакомство с Maven

Maven — инструмент для автоматизации сборки проектов. С ним работают в основном Java-разработчики, хотя есть плагины для интеграции с C/C++, Ruby, Scala, PHP и другими языками. В статье будут рассмотрены особенности и область применения Maven, описан процесс установки и начала работы, а также разобрана структура файла описания проекта.

Назначение и особенности

Собрать на Java проект уровня «Hello, world!» можно и с помощью командной строки. Но чем сложнее разрабатываемое ПО и чем больше оно использует сторонних библиотек и ресурсов, тем сложнее будет команда для сборки. Maven разработан для облегчения этой работы.

Одна из главных особенностей фреймворка — декларативное описание проекта. Это значит, что разработчику не нужно уделять внимание каждому аспекту сборки — все необходимые параметры настроены по умолчанию. Изменения нужно вносить лишь в том объёме, в котором программист хочет отклониться от стандартных настроек.

Ещё одно достоинство проекта — гибкое управление зависимостями. Maven умеет подгружать в свой локальный репозиторий сторонние библиотеки, выбирать необходимую версию пакета, обрабатывать транзитивные зависимости.

Java Backend Developer ОТР , Москва, можно удалённо , По итогам собеседования

Разработчики также подчёркивают независимость фреймворка от ОС. При работе из командной строки параметры зависят от платформы, но Maven позволяет не обращать внимания на этот аспект.

При необходимости систему сборки можно настроить под собственные нужды, используя готовые плагины и архетипы. А если ничего подходящего не нашлось — можно написать свои.

В этой статье мы будем работать с Maven с помощью командной строки, однако этот фреймворк также интегрирован в Eclipse, IntelliJ IDEA, NetBeans и другие IDE.

Установка, настройка и создание стандартного проекта

Скачать Maven можно с официальной страницы проекта. Там же вас познакомят с минимальными требованиями — на машине должен быть установлен JDK, а также потребуется свободное место на диске, около 500 мегабайт. Это место нужно не для самой установки, оно будет использовано для создания локального репозитория.

На странице скачивания вы найдёте несколько разных архивов, для первого раза лучше использовать готовые бинарники. Исходники потребуются, если захочется всё сломать покопаться в Maven.

Архив можно распаковать в любое удобное место. После этого нужно добавить путь к папке bin из распакованного архива в переменную среды PATH . В Windows нужно зайти в настройки параметров системы (вызывается комбинацией клавиш Win+Pause или щелчком правой кнопкой мыши по ярлыку «Мой / Этот компьютер» -> «Свойства»), и выбрать пункт «Дополнительные параметры системы». В правом нижнем углу нажмите кнопку «Переменные среды». Выберите переменную PATH , нажмите «Изменить», в открывшемся окне — «Создать» и добавьте путь. Обратите внимание, путь должен вести именно к папке bin .

В ОС на основе Unix переменную среды можно добавить консольной командной:

export PATH=/opt/apache-maven-3.6.0/bin:$PATH

Проверить, всё ли сделано правильно, можно с помощью консольной команды mvn -v . Вы должны увидеть что-то подобное:

Читайте также:
Icsee что это за программа

Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T21:41:47+03:00) Maven home: C:apache-maven-3.6.0bin.. Java version: 10.0.1, vendor: Oracle Corporation, runtime: C:Program FilesJavajdk-10.0.1 Default locale: ru_RU, platform encoding: Cp1251 OS name: «windows 10», version: «10.0», arch: «amd64», family: «windows»

Создаём папку для нового проекта и переходим в неё. Далее создаём новый проект. Для этого в консоли выполните команду:

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

Выглядит довольно сложно, поэтому разберём её по порядку.

archetype : generate это так называемая цель. Она указывает Maven, что нужно создать проект из архетипа. Дальше с помощью -D мы указываем определённые параметры генерации.

  • groupId = com . mycompany . app указывает на разработчика ПО, там вы можете указать доменное имя своей компании.
  • artifactId = my — app — название проекта. Maven оперирует так называемыми артефактами. Это приложения, плагины, архетипы и другие проекты. И ваша разработка также будет считаться артефактом.
  • archetypeArtifactId = maven — archetype — quickstart указывает, какой архетип использовать в качестве шаблона для создания приложения. Как видите, это тоже артефакт. Указанный архетип создаст простой проект, сгенерирует структуру каталогов и даже заботливо положит в папку исходников программу «Hello, world!», чтобы вам не пришлось самому писать её в двухсотый раз.
  • archetypeVersion = 1.4 указывает на версию артефакта «архетип».
  • interactiveMode = false отключает создание проекта в интерактивном режиме. Вы можете запустить цель archetype : generate без параметров, и Maven предложит установить параметры в процессе генерации. В данном случае нам это не нужно. Кстати, отключить интерактивный режим можно параметром -B . Полный список параметров для mvn можно получить по команде mvn -h .

Выполнив команду, Maven сгенерирует следующую структуру проекта:

my-app |— pom.xml `— src |— main | `— java | `— com | `— mycompany | `— app | `— App.java `— test `— java `— com `— mycompany `— app `— AppTest.java

Исходники нашего проекта будут лежать в папке src/main/java (и сейчас там уже есть автоматически сгенерированный файл), но нам сейчас интереснее файл pom.xml в корневом каталоге. Это и есть тот самый файл описания проекта, на основе которого осуществляются все операции Maven. Он написан на языке POM, входящим в семейство XML:

4.0.0 com.mycompany.app my-app 1.0-SNAPSHOT my-app http://www.example.com UTF-8 1.7 1.7 junit junit 4.11 test

Разберёмся, что всё это значит.

Что значат теги в pom.xml

Тег project является базовым и содержит всю информацию о проекте. В заголовке указана информация, необходимая Maven для понимания файла pom.xml . Тег modelVersion указывает на текущую версию POM. Эти два тега обычно генерируются автоматически, менять их не нужно.

Затем идёт информация, формирующая уникальный идентификатор проекта, теги groupId и artifactId . Её мы задавали выше при генерации из архетипа. Тег version тоже входит в эту группу. Он обычно генерируется и обновляется автоматически. После номера версии идёт суффикс -SNAPSHOT . Это означает, что проект находится в стадии разработки.

В процессе выпуска ПО фреймворк уберёт этот суффикс, а если разработка продолжится — автоматически увеличит номер версии. Вместе эти три тега позволяют однозначно идентифицировать артефакт.

name содержит отображаемое имя артефакта, а url — ссылку на сайт. Поскольку сайт не задан при генерации, pom.xml содержит напоминание об этом в виде комментария. Кроме того, можно добавить краткое описание в description . Эти три тега зачастую используются при формировании документации.

Дальше мы видим блок properties . Здесь указаны особые настройки, такие как кодировка файла и используемая версия компилятора Java. Без этого блока можно обойтись, положившись на настройки по умолчанию.

Следом идёт очень важный блок dependencies . В нём описываются все используемые в проекте зависимости. Каждую необходимо выделить тегом dependency и указать уникальные идентификационные данные: groupId , artifactId и version . Maven сам подгрузит транзитивные зависимости. Кроме того, с помощью тега scope можно указать этапы, на которых будет использован артефакт. Сейчас в pom.xml всего одна зависимость — артефакт JUnit, библиотека для модульного тестирования на Java, которая будет использоваться только на стадии тестирования.

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

  1. Проверка — validate . Фреймворк проверяет, корректен ли проект и предоставлена ли вся необходимая для сборки информация.
  2. Компиляция — compile . Maven компилирует исходники проекта.
  3. Тест — test . Проверка скомпилированных файлов. В нашем случае будет использована библиотека JUnit.
  4. Сборка проекта — package . По умолчанию осуществляется в формате JAR. Этот параметр можно изменить, добавив в project тег packaging .
  5. Интеграционное тестирование — integration-test . Maven обрабатывает и при необходимости распаковывает пакет в среду, где будут выполняться интеграционные тесты.
  6. Верификация — verify . Артефакт проверяется на соответствие критериям качества.
  7. Инсталляция — install . Артефакт попадает в локальный репозиторий. Теперь его можно использовать в качестве зависимости.
  8. Размещение проекта в удалённом репозитории — deploy , — финальная стадия работы.

Эти фазы упорядочены и выполняются поочерёдно. Если необходимо собрать проект, система последовательно проведёт оценку, компиляцию и тестирование, и только после этого сборку. Помимо этого есть две фазы, выполняющиеся отдельно, только прямой командой. Это очистка — clean , удаляющая предыдущие сборки, и создание документации для сайта — site .

Закончим рассмотрение pom.xml секцией build . Она не является обязательной, в данном pom.xml в неё включены плагины из архетипа, однако можно обойтись и без них. Плагинов для Maven тысячи, освоившись с применением фреймворка вы сможете сами подобрать себе необходимые.

В проектах чуть серьёзнее, чем вычисление факториала, приходится использовать внешние ресурсы. Maven способен автоматически обрабатывать файлы ресурсов и размещать их в сборке проекта. Для этого их нужно разместить в папке src/main/resources . Файлы будут упакованы с сохранением внутренней структуры каталогов. Если же по какой-то причине нужно переопределить каталог, используйте вложенные теги resources , resource , directory в секции build :

src/main/another_resources_directory

Итак, с файлом описания мы разобрались. Попробуем собрать проект. Для этого перейдём в корневую папку и выполним команду нужной фазы, mvn package . Получим отчёт о сборке:

Теперь в корневом каталоге проекта вы обнаружите папку target, а в ней готовый файл my-app-1.0-SNAPSHOT.jar .

Запустите команду java — cp target / my — app — 1.0 — SNAPSHOT . jar com . mycompany . app . App — вы должны увидеть «Hello World!».

Поздравляем! Вы собрали проект с помощью Maven. Для более детального изучения инструмента советуем обратить внимание на эти книги и материалы.

Источник: tproger.ru

Maven что это за программа

Мы создали классический «Hello, world», разберём его в деталях. Первое, во что мы упираемся, – это archetype , так в Maven называются шаблоны. Команда archetype:generate создает проект по архетипу. В нашем случае id по умолчанию приравнивается к 15 или maven-archetype-quickstart .

Чтобы задать шаблон, просто добавьте в команду

-DarchetypeArtifactId=maven-archetype-quickstart

Полный список доступных шаблонов можно посмотреть на сайте или отдельно в консоли вбить mvn archetype:generate . Следом идет archetypeGroupId – что-то вроде пространства имён шаблонов. GroupId – обычно используется для указания производителя. Artifact – это название нашего проекта. Собственно, артефакты – это главная сущность в Maven, из них состоит всё.

На выходе получаем такую структуру:

test-app |— pom.xml `— src |— main | `— java | `— com | `— mycompany | `— app | `— App.java `— test `— java `— com `— mycompany `— app `— AppTest.java

В корне видим сгенерированный файл pom.xml, открываем его.

4.0.0 com.mycompany.app test-app 1.0-SNAPSHOT 1.7 1.7 junit junit 4.12 test

Большая часть этого файла сгенерирована и не нуждается в корректировке на стартовом этапе, кроме тега dependencies , именно здесь нужно будет объявлять зависимоcти, каждую в отдельном теге dependency . Сейчас там указана только библиотека для тестирования junit .

Важные тонкости

Напоследок хочу обратить внимание на несколько пунктов. По умолчанию Maven работает с java 1.6, чтобы это поправить, нужно внутри тега project добавить следующий код, заменив на соответствующий номер.

org.apache.maven.plugins maven-compiler-plugin 3.8.1

Поздравляю, проделанной работы достаточно, чтобы прописать команду сборки:

mvn package

Фреймврок автоматически пройдет цепочку из 6 этапов, и теперь остается только запустить:

java -cp target/test-app-1.0-SNAPSHOT.jar com.mycompany.app.App

Наслаждаемся результатом трудов! =)

Этого должно быть достаточно для базового понимания Maven. Если вы загорелись идеей освоить этот инструмент и использовать весь его функционал, стоит начать с детального изучения super POM, шаблонов и плагинов. Удачи вам в освоении новых рубежей 😉

Источник: proglib.io

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru