Maven Quickstart
06 Jan 2018
1. Чтобы создать maven проект введите следующую команду и следуйте инструкциям:
mvn archetype:generate
2. Выберите archetype по умолчанию:
org.apache.maven.archetypes:maven-archetype-quickstart
3. Параметры groupId, artifactId, version, package установите на свой вкус:
Confirm properties configuration:
groupId: quickstart
artifactId: experiment
version: 1.0-SNAPSHOT
package: com.quickstart.experiment
Y: : y
Это maven coordinates - набор индентификаторов которые вместе используются для создания уникального индетификатора проекта, зависимости или плагина в POM файле. Рассмотрим каждый из них по отдельности:
-
groupId - Группа, компания, организация, проект или любая иная группа. Обычно это домен, написанный в обратном порядке. Например, проекты Apache будут иметь groupId org.apache.
-
artifactId - Уникальный индентификатор проекта внутри группы.
-
version - Конкретная версия релиза проекта. Для каждого релиза фиксируется отдельная версия, которая соответствует определенной версии проекта. Проекты, находящиеся в фазе активной разработки, используют специальный индентификатор - SNAPSHOT.
-
package - Корневой пакет данного пректа.
-
packaging - Тип упаковки проекта, по умолчанию это jar. Хоть формат упакивки и является важным компонентом координат Maven, он не является частью его уникального индентификатора. Только groupId.artifactId.version составляют уникальный индентификатор проекта.
-
classifier - Иногда вы будете встречать этот опциональный и произвольный параметр в координатах пректа. В полном виде такой проект будет иметь название вида groupId:artifactId:packaging:classifier:version. Classifier позволяет различать артефакты собранные из одного POM файла, но отличные по содержанию. Как пример изпользования данного элемента, давайте рассмотрим случай когда проект предназначен для JRE-8, но в то же время он должет продолжать поддержку JRE-6. Таким образом будут скомпилированы 2 артефакта с классификаторами jdk18 и jdk16, соответственно. Или же в случае если нам нужно прикрепить к основному артефакту вторичные. В таком случае мы добавляем к зависимости, например, пункт
classifier>sources</classifier>
или<classifier>javadoc</classifier>
. Эти классификаторы позволяют загрузить в репозиторий и скачать из него исходники и документацию проекта.
4. Сгенерирован проект следующей структуры:
experiment
|-src
| |-main
| | |-java
| | |-com
| | |-quickstart
| | |-experiment
| | |-App.java
| |-test
| |-java
| |-com
| |-quickstart
| |-experiment
| |-AppTest.java
|-pom.xml
5. pom.xml выглядит следующим образом:
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>quickstart</groupId>
<artifactId>experiment</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>experiment</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Это лишь верхушка айсберга конфигурации, полная конфигурация содержится в effective pom‘e. Выполнение команды mvn help:effective-pom
выведет его в консоль.
6. Для того чтобы скомпилировать проект, выполните следующую команду:
mvn install
Будет сгенерирована папка target в которой, кроме всего прочего, находится скомпилированный jar файл experiment-1.0-SNAPSHOT.jar:
experiment
|-src
| |-...
|-target
| |-experiment-1.0-SNAPSHOT.jar
| |-...
|-pom.xml
7. Теперь давайте запустим сгенерированный файл:
~> java -cp experiment-1.0-SNAPSHOT.jar com.quickstart.experiment.App
Hello World!
Наш тестовый проект успешно запустился.
Чтобы узнать все цели плагина выполните команду:
mvn help:describe -Dplugin=install -Dfull=true