Пътеводител за Maven Archetype

1. Общ преглед

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

Основната полза от използването на архетипове е да се стандартизира разработването на проекти и да се даде възможност на разработчиците лесно да следват най-добрите практики, като същевременно стартират по-бързо своите проекти.

В този урок ще разгледаме как да създадем персонализиран архетип и след това как да го използваме за генериране на проект на Maven чрез приставката maven-archetype-plugin.

2. Дескриптор на архетип на Maven

Дескрипторът на архетипа Maven е сърцевината на проекта за архетип . Това е XML файл с име archetype-metadata.xml и намиращ се в директорията META-INF / maven на буркана.

Използва се за описване на метаданните на архетипите:

   bar     src/main/java  **/*.java       

В requiredProperties маркер се използва за предоставяне на имоти по време на създаването на проекта. По този начин ще бъдем подканени да предоставим стойности за тях, с избор да приемем стойността по подразбиране.

fileSets, от друга страна, се използват за конфигуриране кои ресурси ще бъдат копирани в конкретния генериран проект. Филтриран файл означава, че заместителите ще бъдат заменени с предоставени стойности по време на процеса на генериране.

И като използваме Packaged = "true" в fileSet , казваме, че избраните файлове ще бъдат добавени към йерархията на папките, посочена от свойството на пакета .

Ако искаме да генерираме мултимодулен проект, тогава таг модулите могат да помогнат за конфигуриране на всички модули на генерирания проект.

Имайте предвид, че този файл е за Архетип 2 и по-нови. Във версията 1.0.x файлът просто се наричаше archetype.xml и имаше различна структура.

За повече информация определено разгледайте официалните документи на Apache.

3. Как да създадем архетип

Архетипът е нормален проект на Maven със следното допълнително съдържание :

  • src / main / resources / archetype-resources е шаблонът, от който се копират ресурси в новосъздадения проект
  • src / main / resources / META-INF / maven / archetype-metadata.xml : е дескрипторът, използван за описване на метаданните на архетипите

За да създадем ръчно архетип, можем да започнем с новосъздаден проект на Maven и след това да добавим ресурсите, споменати по-горе.

Или можем да го генерираме с помощта на приставката archetype-maven-plugin и след това да персонализираме съдържанието на директорията archetype-resources и файла archetype-metadata.xml .

За да генерираме архетипа, можем да използваме:

mvn archetype:generate -B -DarchetypeArtifactId=maven-archetype-archetype \ -DarchetypeGroupId=maven-archetype \ -DgroupId=com.baeldung \ -DartifactId=test-archetype

Също така можем да създадем архетипа от съществуващ проект на Maven:

mvn archetype:create-from-project

Той се генерира в target / generated-sources / archetype, готов за използване.

Без значение как сме създали архетипа, ще получим следната структура:

archetype-root/ ├── pom.xml └── src └── main ├── java └── resources ├── archetype-resources │   ├── pom.xml │   └── src └── META-INF └── maven └── archetype-metadata.xml

Вече можем да започнем да изграждаме нашия архетип, като поставяме ресурси в директорията archetype-resources и ги конфигурираме във файла archetype-metadata.xml .

4. Изграждане на Архетипа

Сега сме готови да персонализираме нашия архетип. За акцента на този процес ще покажем създаването на прост архетип на Maven за генериране на RESTful приложение, базирано на JAX-RS 2.1.

Нека просто го наречем maven-archetype .

4.1. Архетипни опаковки

Нека започнем с модифициране на pom.xml на проекта за архетип, намиращ се в директорията maven-archetype :

maven-archetype

Този тип опаковка се предлага благодарение на разширението за архетип-опаковка :

   org.apache.maven.archetype archetype-packaging 3.0.1    

4.2. Добавяне на pom.xml

Нека сега създадем файл pom.xml, намиращ се в директорията archetype-resources :

 ${groupId} ${artifactId} ${version} war   javax.ws.rs javax.ws.rs-api 2.1 provided   

Както виждаме, groupId, artifactId и версия са параметризирани. Те ще бъдат заменени по време на създаването на нов проект от този архетип.

Можем да поставим всичко необходимо от генерирания проект, като зависимости и приставки, в pom.xml . Тук добавихме зависимостта JAX RS, тъй като архетипът ще се използва за генериране на RESTful базирано приложение.

4.3. Добавяне на необходими ресурси

След това можем да добавим малко Java код за нашето приложение в archetype-resources / src / main / java .

Клас за конфигуриране на JAX-RS приложение:

package ${package}; // import @ApplicationPath("${app-path}") public class AppConfig extends Application { }

И клас за ping ресурс:

@Path("ping") public class PingResource{ //... }

И накрая, поставете конфигурационния файл на сървъра, server.xml , в archetype-resources / src / main / config / liberty .

4.4. Конфигуриране на метаданни

След добавяне на всички необходими ресурси, вече можем да конфигурираме кои ще бъдат копирани по време на генерирането чрез файла archetype-metadata.xml .

Можем да кажем на нашия архетип, че искаме да бъдат копирани всички изходни файлове на Java:

    src/main/java  **/*.java    src/main/config/liberty  server.xml    

Тук искаме всички Java файлове от директорията src / main / java и файлът server.xml от src / main / config / liberty да бъдат копирани.

4.5. Инсталиране на архетипа

След като приключихме всичко, можем да инсталираме архетипа, като извикаме тази команда:

mvn install

На този етап архетипът е регистриран във файла archetype-catalog.xml, намиращ се в локалното хранилище на Maven, и следователно готов за употреба.

5. Използване на инсталирания архетип

The Maven-архетип-плъгин позволява на потребителя да се създаде проект Maven чрез генериране цел и съществуваща архетип . За повече информация относно тази приставка можете да посетите началната страница.

Тази команда използва тази приставка за генериране на проект на Maven от нашия архетип:

mvn archetype:generate -DarchetypeGroupId=com.baeldung.archetypes -DarchetypeArtifactId=maven-archetype -DarchetypeVersion=1.0-SNAPSHOT -DgroupId=com.baeldung.restful -DartifactId=cool-jaxrs-sample -Dversion=1.0-SNAPSHOT

След това трябва да предадем GAV на нашия архетип като аргументи на maven-archetype-plugin: generate goal. Също така можем да предадем GAV на конкретния проект, който искаме да генерираме, в противен случай можем да ги предоставим в интерактивен режим.

Следователно конкретният генериран от cool-jaxrs-sample проект е готов за изпълнение без промени. И така, можем да го стартираме, като просто извикаме тази команда:

mvn package liberty:run

След това можем да осъществим достъп до този URL адрес:

//localhost:9080/cool-jaxrs-sample//ping

6. Заключение

В тази статия представихме как да изградим и използваме архетип на Maven.

Демонстрирахме как да създадем архетипа и след това как да конфигурираме ресурсите на шаблона чрез файла archetype-metadata.xml .

Кодът, както обикновено, може да бъде намерен в Github.