Apache Maven — Основы

После публикации тема про Maven в комментариях были вопросы как начать с ним работать, с чего начинать, как составлять файлы pom.xml, где брать плагины и т.д. Эта тема будет своего рода началом работы или FAQ. Терминология Как и любая система, Maven имеет свой набор терминов и понятий.

Вся структура проекта описана в файле pom.xml (POM — Project Object Model), который должен находиться в корневой папке проекта.

Ключевой концепцией Maven является артефакт по сути, это любая библиотека, хранящаяся в репозитории.

Это может быть какая-то зависимость или плагин.

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

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

В самом начале работы с Maven пользователь обязательно столкнется с таким понятием, как архетип.

Архетип — это некое стандартное расположение файлов и каталогов в проектах разного типа (веб, свинг-проекты и т.п.

).

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

Обычно имя артефакта состоит из имени группы, собственного имени и версии.

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

Теперь перейдем к практике.

Установка Maven Последнюю версию всегда можно скачать с сайта страница загрузки на официальном сайте.

Просто распакуйте архив в любую директорию.

Далее вам нужно создать переменную в Path, в которой нужно указать путь к Maven. Заходим в Win+Pause — Advanced — Environment Variables — в верхнем окне нажимаем Create, вводим имя M2_HOME и допустим значение «C:\apache-maven-2.2.1».

Далее мы создаем еще одну переменную M2 со значением %M2_HOME%\bin. Также проверяем наличие переменной JAVA_HOME с путем к JDK. Его значение должно быть примерно таким: «c:\Program Files\Java\jdk1.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 Settings\username\.

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

Создание приложения на основе архетипа На сайте Мавен внесен в список самые популярные архетипы для приложений, но вы легко можете создать свой или найти например более конкретный Здесь .

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

    mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp 
       -DarchetypeArtifactId=maven-archetype-webapp
Теперь мы видим достаточно четкую структуру каталогов с говорящими названиями: java — здесь будут ваши классы, webapp — здесь расположены страницы веб-приложений, ресурсы — различные виды ресурсов в пути к классам (например, файлы конфигурации), test - юнит-тесты соответственно и т.п.

Создать проект Здесь все просто — запускаем команду

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

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

    mvn clean install
и Maven сначала очистит целевую папку проекта, затем соберет ее и поместит в репозиторий.

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

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

Например, для подключения Spring Framework вам необходимо определить следующую зависимость:

 
    <dependencies>
       .

<dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> <version>2.5.5</version> </dependency> </dependencies>

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

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

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

Например, добавим зависимость JSF-фреймворка от ajax-компонентов JBoss RichFaces. С зависимостями все просто:

 
    <dependencies>
       <dependency>
          <groupId>org.richfaces.ui</groupId>
          <artifactId>richfaces-ui</artifactId>
          <version>3.3.1.GA</version>
       </dependency>        
    </dependencies>
А вот репозиторий JBoss теперь нужно прописывать вручную либо в файле settings.xml, который лежит в корне вашего локального репозитория, либо в самом файле pom.xml, в зависимости от того, нужен ли этот репозиторий во всех проектах, или в только один конкретный соответственно:
 
    <!-- JBoss RichFaces Repository -->
    <repositories>
       <repository>
          <releases>
             <enabled>true</enabled>
          </releases>
          <snapshots>
             <enabled>false</enabled>
             <updatePolicy>never</updatePolicy>
          </snapshots>
          <id>repository.jboss.com</id>
          <name>Jboss Repository for Maven</name>
          <url>
              http://repository.jboss.com/maven2/ 
          </url>
          <layout>default</layout>
       </repository>
    </repositories>
Как правило, на сайтах крупных проектов пишут всю информацию, необходимую для встраивания своей библиотеки в проект на базе Maven, но бывают случаи, когда поиск артефакта занимает очень и очень много времени.

Это может нам очень помочь MVNrepository.com — он всегда подскажет вам, где может находиться искомая вами библиотека.

Но если вы не можете его там найти, то по своему опыту могу посоветовать вам загуглить» pom.xml».

Бывает, что проекты уже давно закрыты и не попадают в репозиторий, потому что разработчики уже не заботятся об их распространении.

Тогда остается один путь — добавить файл в репозиторий вручную с помощью команда:

 
    mvn install:install-file
      -Dfile=<path-to-file>
      -DgroupId=<group-id>
      -DartifactId=<artifact-id>
      -Dversion=<version>
      -Dpackaging=<packaging>
 
Последний параметр чаще всего имеет значение jar. Плагины Поскольку плагины — это такие же артефакты, как и зависимости, то и описываются они практически одинаково.

Вместо раздела зависимости — плагины, зависимости — плагин, репозитории — плагинРепозитории, репозиторий — плагинРепозиторий.

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

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

         
    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-eclipse-plugin</artifactId>
       <configuration>
          <wtpversion>2.0</wtpversion>
       </configuration>
    </plugin>
 
Теперь снова зайдите в командную строку и выполните команду
    mvn eclipse:eclipse
Ждем, пока Maven найдет все библиотеки в репозитории или загрузит их и вуаля — теперь наш Maven-проект можно открыть как eclipse-проект. В этом случае библиотеки никуда не копируются, как при классическом подходе, а остаются в репозитории и Eclipse делает ссылку на них через свои переменные.

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

Для получения более подробной информации, пожалуйста, свяжитесь сайт этого проекта .

Однако мы не можем игнорировать достойных конкурентов в виде Артефабрика И Архив .

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

Для более серьёзных целей настоятельно рекомендую детально изучить maven-compiler-plugin и maven-resource-plugin — они непосредственно отвечают за окончательную верстку проекта.

Я считаю, что самым важным моментом в изучении Maven является понимание идеологии — Maven описывает конечную структуру проекта, а не путь к ее достижению, в отличие от Ant.


Полезные ссылки Официальная страница Maven Документация Центральный репозиторий Репозиторий iБиблио Поиск артефактов по названию Хороший форум Maven Maven: полное руководство — хорошая книга по Maven Теги: #Apache Maven #maven #Apache #java #сборка проекта #java
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.