С помощью концепции Архитипов Maven обеспечивает большое количество различных шаблонов проектов (более 600). Это помогает пользователям быстро начинать новые проекты используя команду такого вида:
mvn archetype:generate
Архитип
Архитип – это плагин Maven, задача которого состоит в создании структуры проекта по определённому шаблону. Рассмотри архитип quickstart и создадим с его помощью java-приложение.
Создание приложения
Переходим в нужную нам директорию и выполняем в терминале следющую команду:
mvn archetype:generate
В результате мы получим следующее:
1576: remote -> uk.ac.ebi.gxa:atlas-archetype (Archetype for generating a custom Atlas webapp)
1577: remote -> uk.ac.rdg.resc:edal-ncwms-based-webapp (-)
1578: remote -> uk.co.nemstix:basic-javaee7-archetype (A basic Java EE7 Maven archetype)
1579: remote -> uk.co.solong:angular-spring-archetype (So Long archetype for RESTful spring services with an AngularJS frontend. Includes debian deployment)
1580: remote -> us.fatehi:schemacrawler-archetype-maven-project (-)
1581: remote -> us.fatehi:schemacrawler-archetype-plugin-command (-)
1582: remote -> us.fatehi:schemacrawler-archetype-plugin-dbconnector (-)
1583: remote -> us.fatehi:schemacrawler-archetype-plugin-lint (-)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 771: 7
Выбираем число 7 и нужную нам версию.
После этого указываем наши параметры.
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 771: 7
Choose am.ik.archetype:spring-boot-jersey-blank-archetype version:
1: 1.0.0
2: 1.0.1
3: 1.0.2
Choose a number: 3: 1
Define value for property 'groupId': : Tutorials
Define value for property 'artifactId': : MavenTutorial
Define value for property 'version': 1.0-SNAPSHOT: :
Define value for property 'package': Tutorials: : net.proselyte.mavenproject
И вводим Y, после чего нажимаем Enter.
В итоге мы получим следующий результат:
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: spring-boot-jersey-blank-archetype:1.0.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: Tutorials
[INFO] Parameter: artifactId, Value: MavenTutorial
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: net.proselyte.mavenproject
[INFO] Parameter: packageInPathFormat, Value: net/proselyte/mavenproject
[INFO] Parameter: package, Value: net.proselyte.mavenproject
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: groupId, Value: Tutorials
[INFO] Parameter: artifactId, Value: MavenTutorial
[INFO] project created from Archetype in dir: /home/proselyte/Programming/Projects/Proselyte/MavenProject/MavenTutorial
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:20.860s
[INFO] Finished at: Thu Apr 28 10:29:18 EEST 2016
[INFO] Final Memory: 17M/222M
[INFO] ------------------------------------------------------------------------
В результате мы получим следующую структуру проекта:
Наш 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>Tutorials</groupId>
<artifactId>MavenProject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MavenTutorial</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>
На этом мы заканчиваем изучение шаблонов проектов. С остальными шаблонами Вы можете ознакомиться на официальном сайте проекта.
В следующем уроке мы рассмотрим снепшоты (snapshots).