Mavenアーキタイプの手引き

Mavenアーキタイプのガイド

1. 概要

Mavenアーキタイプは、具体的なカスタマイズされたMavenプロジェクトにインスタンス化できる一種のプロジェクトの抽象化です。 つまり、it’s a template project template from which other projects are createdです。

アーキタイプを使用する主な利点は、プロジェクト開発を標準化し、開発者がベストプラクティスを簡単に実行しながら、プロジェクトをより早くブートストラップできるようにすることです。

このチュートリアルでは、カスタムアーキタイプを作成する方法と、それを使用してmaven-archetype-plugin.を介してMavenプロジェクトを生成する方法について説明します。

2. Mavenアーキタイプ記述子

The Maven archetype descriptor is the heart of the archetype project。 これはarchetype-metadata.xmlという名前のXMLファイルであり、jarのMETA-INF/mavenディレクトリにあります。

アーキタイプのメタデータを説明するために使用されます。



    
        
            bar
        
    

    
        
            src/main/java
            
                **/*.java
            
        
    

    
        
    

requiredPropertiesタグは、プロジェクトの生成中にプロパティを提供するために使用されます。 したがって、デフォルト値を受け入れるかどうかを選択して、値を指定するように求められます。

一方、fileSets,は、具体的に生成されたプロジェクトにコピーされるリソースを構成するために使用されます。 フィルター処理されたファイルとは、生成プロセス中にプレースホルダーが提供された値に置き換えられることを意味します。

また、fileSetpackaged=”true”を使用することにより、選択したファイルがpackage propertyで指定されたフォルダー階層に追加されることを意味します。

マルチモジュールプロジェクトを生成する場合、タグmodulesは、生成されたプロジェクトのすべてのモジュールを構成するのに役立ちます。

このファイルはArchetype 2以降に関するものであることに注意してください。 バージョン1.0.xでは、ファイルは単にarchetype.xmlと呼ばれ、構造が異なります。

詳細については、official Apache docsを必ず確認してください。

3. アーキタイプを作成する方法

An archetype is a normal Maven project with the following extra content

  • src/main/resources/archetype-resources isリソースが新しく作成されたプロジェクトにコピーされるテンプレート

  • 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.example \
  -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. アーキタイプの構築

これで、アーキタイプをカスタマイズする準備が整いました。 このプロセスのハイライトとして、JAX-RS2.1に基づいてRESTfulアプリケーションを生成するための単純なMavenアーキタイプの作成を紹介します。

単にmaven-archetypeと呼びましょう。

4.1. アーキタイプパッケージング

the maven-archetype directoryの下にあるアーキタイププロジェクトのpom.xml を変更することから始めましょう。

maven-archetype

このタイプのパッケージは、archetype-packaging拡張子のおかげで利用できます。


    
        
            org.apache.maven.archetype
            archetype-packaging
            3.0.1
        
    
    

4.2. pom.xmlの追加

次に、archetype-resourcesディレクトリの下にpom.xmlファイルを作成しましょう。



    ${groupId}
    ${artifactId}
    ${version}
    war

    
        
            javax.ws.rs
            javax.ws.rs-api
            2.1
            provided
        
    

ご覧のとおり、groupId, artifactIdversionはパラメーター化されています。 これらは、このアーキタイプからの新しいプロジェクトの作成中に置き換えられます。

依存関係やプラグインなど、生成されたプロジェクトに必要なすべてのものをpom.xmlに入れることができます。 ここでは、RESTfulベースのアプリケーションの生成にアーキタイプが使用されるため、JAXRS依存関係を追加しました。

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.xmlarchetype-resources/src/main/config/libertyに配置します。

4.4. メタデータの構成

必要なすべてのリソースを追加した後、archetype-metadata.xmlファイルを介して生成中にコピーされるリソースを構成できます。

すべてのJavaソースファイルをコピーすることをアーキタイプに伝えることができます。



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

ここでは、src/main/javaディレクトリのすべてのJavaファイルと、src/main/config/liberty,server.xmlファイルをコピーする必要があります。

4.5. アーキタイプのインストール

すべてをまとめたので、次のコマンドを呼び出してアーキタイプをインストールできます。

mvn install

この時点で、アーキタイプはMavenローカルリポジトリにあるファイルarchetype-catalog.xml,に登録されているため、使用できるようになっています。

5. インストールされたアーキタイプの使用

The maven-archetype-plugin allows the user to create a Maven project through the generate goal and existing archetype.このプラグインの詳細については、homepageにアクセスしてください。

このコマンドは、このプラグインを使用して、アーキタイプからMavenプロジェクトを生成します。

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

次に、アーキタイプのGAVをmaven-archetype-plugin:generateゴールへの引数として渡す必要があります。 生成したい具体的なプロジェクトのGAVを渡すこともできます。そうでない場合は、インタラクティブモードで提供できます。

したがって、具体的なcool-jaxrs-sampleで生成されたプロジェクトは、変更なしで実行する準備ができています。 したがって、次のコマンドを呼び出すだけで実行できます。

mvn package liberty:run

その後、次のURLにアクセスできます。

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

6. 結論

この記事では、Mavenアーキタイプを構築して使用する方法を紹介しました。

アーキタイプを作成する方法と、archetype-metadata.xmlファイルを使用してテンプレートリソースを構成する方法を示しました。

いつものように、コードはover on Githubで見つけることができます。