1. Что такое Maven
Maven - это инструмент строительства проекта, разработанный в Java. Он может автоматизировать компиляцию, тестирование, публикацию и документы в процессе строительства проекта, что значительно снижает бремя развертывания программистов.
2. Установите Maven
Установить Maven очень проста. Посетите официальную страницу Maven, чтобы загрузить: http://maven.apache.org/download.cgi
После загрузки настройте переменную среды M2_HOME, а затем запустите MVN -версию в терминале. Когда вы видите правильную подсказку вывода, Maven установлен.
3. Основные концепции Maven
Основной идеей Maven является POM, то есть объектная модель проекта. Файлы POM описывают ресурсы (исходный код, зависимости, тесты и т. Д.), Используемые проектом Maven в форме XML -файла. На следующем рисунке описывается структура файла POM и то, как Maven вызывает файл POM.
Когда команда Maven будет выполнена, будет передаваться файл POM, и Maven будет выполнен на ресурсе, описанном в POM
POM -файл:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <dolidyversion> 4.0.0 </modelversion> <!-Основы-> <groupid> ... </GroupId> </artifactid> ... </artifactid> <sersive> ... </version> <backaging> ... </packaging> </renticents> ... <//</renticents> ... <//<//зависимости> ... </renticents> ... </</renticents> ... </</renticents> </artifactid> ... <dependencyManagement> ... </degencyManagement> <dodules> ... </modules> <properties> ... </properties> <!-Настройки сборки-> <buld> ... </build> <proporting> ... </Reporting> <!-Подробнее информация о проекте-> <mame> </name> <secription> ... </url> </url> </receptyear> ... </url> ... <licensense> ... </лицензии> <Surance> ... </Organization> <Разработчики> ... </Разработчики> <Purtors> ... </Antormors> <!-Настройки окружающей среды-> <SISSUENAMENT> ... </ESSUENAMENTAME> <CIMANAGE> ... </cimanage <premequisites> ... </prerequisites> ... </repositories> <prepositories> ... </Repositories> <blicinrepositories> ... </pluginRepositories> <distributionmanagement> ... </DistributionManagement> <Профили> ... </Profiles> Project>
ModelVersion - это версия модели POM, 4.0.0 поддерживает Maven2 и 3
Координаты Maven (координаты Maven)
(1) GroupId: это уникальный идентификатор организации или проекта. В большинстве случаев он будет использовать корневое название пакета Java в проекте в качестве GroupID, например, Com.Pastqing
(2) Artifactid: это название проекта, созданного, например, Artifactid платежной системы-это веб-платеж. Artifactid - это подкаталонное название в рамках Groudid Directory в репозитории Maven
(3) Версия: как имя подразумевает номер версии эмиссии проекта
Вышеуказанные три элемента являются частью названия результата сборки. После того, как проект будет создан, будет создан пакет JAR. Путь, расположенный в репозитории Maven,-это maven_repo/com/pastqing/web-pay/1.0/web-pay-1.0.jar
4. Hello World Java Project, построенный с Maven
Создайте проект, используя архетип плагина Maven:
Откройте рабочий каталог в терминале и запустите команду:
MVN Архетип: генерировать
В первый раз, когда он работает медленнее, потому что в первый раз вам нужно загрузить соответствующий прототип проекта из центрального репозитория Maven. После загрузки модель проекта будет выбрана, а GroupId, Artifactid, версия и т. Д. Будет введена. После завершения строительства будет подсказка успеха.
Упаковка проекта: переключитесь на каталог Project Root и запустите пакет MVN. После того, как пакет будет успешным, проект будет генерировать целевую папку с сгенерированными файлами JAR и файлами класса.
Запустите файл JAR:
java -cp target/helloworld-1.0-snapshot.jar com.pastqing.app
На этом этапе был завершен самый простой проект Java, построенный Maven.
5. Проект Java-Web, построенный с Maven
Создание веб -проекта в основном похожа на создание проекта Java, но используемая модель отличается. Я не буду объяснять это здесь. Давайте поговорим о том, как использовать плагин Tomcat или Jetty для запуска веб-проекта. Здесь мы забираем Tomcat в качестве примера.
Установка плагина Maven Tomcat: http://tomcat.apache.org/maven-plugin-2.2/
Мы добавляем следующую информацию о плагине в файл POM в веб-проекте
<blicin> <groupid> org.apache.tomcat.maven </GroupId> <artifactid> tomcat6-maven-plugin </artifactid> <sersive> 2.2 </version> </placin> <plagin> <groupid> mavache.tomcat.maven </GroupId> <ratifactid> tomcaT7-maven.-plugid.maven </artifactid> tomcaven. <версия> 2.2 </version> </plugin>
Таким образом, мы интегрируем плагин Maven Tomcat, и нам нужна только одна команда для развертывания и запуска службы. Команда следующая:
MVN Tomcat: Беги
(Tomcat6)
MVN Tomcat7: Run
(Tomcat7)
Автоматическое развертывание на внешнее Tomcat с помощью плагина Tomcat Maven
Вышеупомянутое автоматическое развертывание будет использовать Tomcat, встроенный в Maven. Далее мы изменяем файл POM, чтобы позволить проекту развернуться во внешний Tomcat.
Изменить файл Project POM и добавить информацию о конфигурации сервера
<plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration> <url>http://localhost:8080/manager/text</url> <server>tomcat7</server> <username>admin</username> <shourse> admin </password> </configuration> </placin>
Значения сервера, имени пользователя и пароля соответствуют одному за другой сервер, имени пользователя и пароля в настройке.xml в %maven_home.
Запустить внешний Tomcat и запустите команду mvn tomcat7: readploy
6. Как построить многомодульный проект с Maven
1. родительский помпон
Все файлы Maven POM унаследованы от родительского POM. Если не указан родительский POM, файл POM унаследован от корневого POM. Интеграционная связь файлов POM показана на рисунке ниже:
Вы можете сделать один POM -файл явно унаследовать другой файл POM. Таким образом, настройки всех файлов POM дочернего POM могут быть изменены путем изменения настройки общедоступного файла POM POM. Здесь мы используем родительский тег, чтобы определить родительский помпон. Давайте построим проект Multi-Module Mavne
2. Создание структуры каталога проекта
Мы создаем проект Maven-Web под названием EducationCloud. Затем мы создаем несколько папок в каталоге проекта, чтобы разделить наши модули. Они являются образованием-родителем (родительский модуль), образовательный ядер (бизнес), образование (организация), образование-Web (веб-сервис)
Отдел каталогов можно разделить в соответствии с потребностями, мое разделение, как указано выше
3. Измените файл POM
Мы используем теги модуля для разделения модулей. Откройте файл POM в корневом каталоге и добавьте тег для крема.
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <dolidayversion> 4.0.0 </modelversion> <groupid> com.educationcloud </artifact> <sersion> 1.0-snapshot </version> <badagaging> pom </packaging> <dodules> <doolule> образователь-parent </module> <dolidue> community-core </module> <doolule> Education-ent </module> <dolidue> Образование </module> </modules> <mame>
Здесь мы говорим о упаковочном теге: наиболее распространенным является упаковывать его как банка, война. Любой проект Maven должен определить упакованный элемент в файле POM. Если элемент не объявлен, он по умолчанию упакован как банка. Если значение определения - война, оно упаковано как военный пакет. Если значение является POM, пакет не генерируется (обычно используется в родительском модуле).
Добавьте родители -теги в каждый модуль:
Родительский тег используется для определения положения координат родительского POM и определяется следующим образом:
<parent> <groupid> com.educationCloud </GroupId> <ArtifactId> EducationCloud-parent </artifactId> <sersive> 1.0-snapshot </version> <entervativePath> </vitivativePath> </parent>
GroupId, AritFactid, версия - это элементы, которые представляют информацию о местоположении родительского POM. Относительный пакет - это относительный путь, который представляет местоположение родительского помпона. По умолчанию есть ../pom.xml. Здесь следует отметить, что версия GroupId, AritFactid должна соответствовать исходному файлу POM.
Используйте зависимость управления для управления всеми зависимостями в проекте. Чтобы однозначно управлять зависимостями, мы используем зависимость управления в файле POM в модуле родительского проекта, чтобы объявить все зависимости в проекте. Таким образом, при обращении к зависимостям в других подпроектах номер версии может быть опущен, и его также легко изменить.
Напишите файл POM модуля родительского проекта ** Образование-париент, добавьте его следующим образом:
Используйте PluginManagement для управления плагином Maven в проекте. Чтобы равномерно управлять плагином Maven в проекте, такого как плагин компиляции Maven, плагин с упаковкой и т. Д. И его информация о конфигурации, добавьте плагинмансмен в родительский файл POM POM для управления. Таким образом, плагины, упомянутые во всех подмодулях, будут обработаны равномерно, а следующее добавляется:
<pluginManagement> <plugins> <!-- Complile plugin configuration--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-complier-plugin</artifactId> <version>3.3</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> <blicin> </plugins> </pluginmanagement>
Выше мы добавили конфигурацию подключаемого модуля Maven, скомпилированной с JDK1.7. После сохранения мы можем увидеть соответствующие модификации в эффективном POM каждого подмодуля.
Используйте теги свойств для определения констант:
Мы определяем номера версий каждой зависимости как разные константы, так что это удобно для будущих модификаций:
<properties> <jdkversion> 1.7 </jdkversion> <servletversion> 3.1.0 </servledversion> <mysqlversion> 5.1.34 </mysqlversion> <unitvervision> 4.12 </junitversion> <daultending> utf-8 </defaultencoding>
При цитировании просто используйте форму $ {jdkversion}.
Обратите внимание, что все вышеперечисленные операции могут работать в IDE, что делает его более удобным и простым.