2.3. Maven リポジトリーの使用

2.3.1. JBoss EAP Maven リポジトリーの設定

概要

プロジェクトで JBoss EAP Maven リポジトリーを使用するよう Maven に指示する方法は 2 つあります。

Maven 設定を使用した JBoss EAP Maven リポジトリーの設定

これは推奨される方法です。リポジトリーマネージャーや共有サーバー上のリポジトリーを使用して Maven を設定すると、プロジェクトの制御および管理を行いやすくなります。また、代替のミラーを使用してプロジェクトファイルを変更せずにリポジトリーマネージャーに特定のリポジトリーのルックアップ要求をすべてリダイレクトすることも可能になります。ミラーの詳細は、http://maven.apache.org/guides/mini/guide-mirror-settings.html を参照してください。

プロジェクトの POM ファイルにリポジトリー設定が含まれていない場合、この設定方法はすべての Maven プロジェクトに対して適用されます。

この項では、Maven の設定方法について説明します。Maven インストールグローバル設定またはユーザーのインストール設定を指定できます。

Maven 設定ファイルの指定

  1. 使用しているオペレーションシステムの Maven settings.xml ファイルを見つけます。通常、このファイルは ${user.home}/.m2/ ディレクトリーにあります。

    • Linux または Mac では、これは ~/.m2/ になります。
    • Windows では、これは \Documents and Settings\.m2\ または \Users\.m2\ になります。
  2. settings.xml ファイルが見つからない場合は、${user.home}/.m2/conf/ ディレクトリーの settings.xml ファイルを ${user.home}/.m2/ ディレクトリーへコピーします。
  3. 以下の XML を <profiles> element of the settings.xml ファイルにコピーします。JBoss EAP リポジトリーの URL を調べJBOSS_EAP_REPOSITORY_URL をその URL に置き換えます。

    <!-- Configure the JBoss Enterprise Maven repository -->
    <profile>
      <id>jboss-enterprise-maven-repository</id>
      <repositories>
        <repository>
          <id>jboss-enterprise-maven-repository</id>
          <url>JBOSS_EAP_REPOSITORY_URL</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>jboss-enterprise-maven-repository</id>
          <url>JBOSS_EAP_REPOSITORY_URL</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>

    以下に、オンラインの JBoss EAP Maven リポジトリーにアクセする設定例を示します。

    <!-- Configure the JBoss Enterprise Maven repository -->
    <profile>
      <id>jboss-enterprise-maven-repository</id>
      <repositories>
        <repository>
          <id>jboss-enterprise-maven-repository</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>jboss-enterprise-maven-repository</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  4. 次の XML を settings.xml ファイルの <activeProfiles> 要素へコピーします。

    <activeProfile>jboss-enterprise-maven-repository</activeProfile>
  5. Red Hat CodeReady Studio の実行中に settings.xml ファイルを変更する場合は、ユーザー設定を更新する必要があります。

    1. メニューで WindowPreferences の順に選択します。
    2. Preferences ウインドウで Maven を展開表示し、User Settings を選択します。
    3. Update Settings ボタンをクリックし、Red Hat CodeReady Studio で Maven のユーザー設定を更新します。
重要

Maven リポジトリーに古いアーティファクトが含まれる場合は、プロジェクトをビルドまたはデプロイしたときに以下のいずれかの Maven エラーメッセージが表示されることがあります。

  • Missing artifact ARTIFACT_NAME
  • [ERROR] Failed to execute goal on project PROJECT_NAME; Could not resolve dependencies for PROJECT_NAME

この問題を解決するには、最新の Maven アーティファクトをダウンロードするためにローカルリポジトリーのキャッシュバージョンを削除します。キャッシュバージョンは ${user.home}/.m2/repository/ に存在します。

プロジェクト POM を使用した JBoss EAP Maven リポジトリーの設定
警告

この設定方法は、設定されたプロジェクトのグローバルおよびユーザー Maven 設定を上書きするため、回避する必要があります。

プロジェクト POM ファイルを使用してリポジトリーを設定する場合は、慎重に計画する必要があります。このような設定では、推移的に含まれた POM が問題になります。これは、Maven は、外部リポジトリーで不明なアーティファクトを問い合わせ、これによりビルド処理に時間がかかるようになるためです。また、アーティファクトの抽出元を制御できなくなることもあります。

注記

リポジトリーの URL はリポジトリーの場所 (ファイルシステムまたは Web サーバー) によって異なります。リポジトリーのインストール方法は、「JBoss EAP の Maven リポジトリーのインストール」を参照してください。各インストールオプションの例は次のとおりです。

ファイルシステム
file:///path/to/repo/jboss-eap-maven-repository
Apache Web Server
http://intranet.acme.com/jboss-eap-maven-repository/
Nexus リポジトリーマネージャー
https://intranet.acme.com/nexus/content/repositories/jboss-eap-maven-repository

プロジェクトの POM ファイルの設定

  1. テキストエディターでプロジェクトの pom.xml ファイルを開きます。
  2. 次のリポジトリー設定を追加します。すでにファイルに <repositories> 設定が存在する場合は <repository> 要素を追加します。必ず <url> を実際のリポジトリーの場所に変更するようにしてください。

    <repositories>
       <repository>
          <id>jboss-eap-repository-group</id>
          <name>JBoss EAP Maven Repository</name>
          <url>JBOSS_EAP_REPOSITORY_URL</url>
          <layout>default</layout>
          <releases>
             <enabled>true</enabled>
             <updatePolicy>never</updatePolicy>
          </releases>
          <snapshots>
             <enabled>true</enabled>
             <updatePolicy>never</updatePolicy>
          </snapshots>
       </repository>
    </repositories>
  3. 次のプラグインリポジトリー設定を追加します。すでにファイルに <pluginRepositories> 設定が存在する場合は <pluginRepository> 要素を追加します。

    <pluginRepositories>
       <pluginRepository>
          <id>jboss-eap-repository-group</id>
          <name>JBoss EAP Maven Repository</name>
          <url>JBOSS_EAP_REPOSITORY_URL</url>
          <releases>
             <enabled>true</enabled>
          </releases>
          <snapshots>
             <enabled>true</enabled>
          </snapshots>
       </pluginRepository>
    </pluginRepositories>
JBoss EAP リポジトリーの URL の確認

リポジトリーの URL は、リポジトリーが存在する場所によって異なります。以下のいずれかのリポジトリーの場所を使用するよう Maven を設定できます。

  • オンラインの JBoss EAP Maven リポジトリーを使用するには、URL https://maven.repository.redhat.com/ga/ を指定します。
  • ローカルファイルシステムにインストールされた JBoss EAP Maven リポジトリーを使用するには、リポジトリーをダウンロードし、URL のローカルファイルパスを使用する必要があります。例: file:///path/to/repo/jboss-eap-7.2.0.GA-maven-repository/maven-repository/
  • Apache Web Server にリポジトリーをインストールする場合、リポジトリーの URL は http://intranet.acme.com/jboss-eap-7.2.0.GA-maven-repository/maven-repository/ のようになります。
  • Nexus リポジトリーマネージャーを使用して JBoss EAP Maven リポジトリーをインストールする場合、URL は https://intranet.acme.com/nexus/content/repositories/jboss-eap-7.2.0.GA-maven-repository/maven-repository/ のようになります。
注記

リモートリポジトリーへのアクセスには、HTTP サーバーのリポジトリー用の http:// やファイルサーバーのリポジトリー用の file:// などの一般的なプロトコルが使用されます。

2.3.2. Red Hat CodeReady Studio で使用する Maven の設定

アプリケーションをビルドし、Red Hat JBoss Enterprise Application Platform にデプロイするのに必要なアーティファクトと依存関係は、パブリックリポジトリーでホストされます。アプリケーションをビルドするときにこのリポジトリーを使用するよう Maven を設定する必要があります。ここでは、Red Hat CodeReady Studio を使用してアプリケーションをビルドおよびデプロイする場合に Maven を設定する手順について説明します。

Maven は Red Hat CodeReady Studio で配布されるため、個別にインストールする必要がありません。ただし、JBoss EAP へのデプロイメントのために Java EE Web Project ウィザードで使用する Maven を設定する必要があります。以下の手順は、Red Hat CodeReady Studio 内から Maven 設定ファイルを編集して JBoss EAP で使用する Maven を設定する方法を示しています。

Red Hat CodeReady Studio での Maven の設定

  1. WindowPreferences の順にクリックし、JBoss Tools を展開して JBoss Maven Integration を選択します。

    図2.1 Preferences ウィンドウの JBoss Maven 統合ペイン

    Preferences ウィンドウの JBoss Maven 統合ペイン
  2. Configure Maven Repositories をクリックします。
  3. Add Repository をクリックして JBoss Enterprise Maven リポジトリーを設定します。Add Maven Repository ダイアログで以下の手順を実行します。

    1. Profile IDRepository ID、および Repository Name の値を jboss-ga-repository に設定します。
    2. Repository URL の値を http://maven.repository.redhat.com/ga に設定します。
    3. Active by default チェックボックスをクリックして Maven リポジトリーを有効にします。
    4. OK をクリックします。

      図2.2 Maven リポジトリーの追加

      Maven リポジトリーの追加
  4. リポジトリーを確認して、Finish をクリックします。
  5. Are you sure you want to update the file MAVEN_HOME/settings.xml?」 というメッセージが表示されます。Yes をクリックして設定を更新します。OK をクリックしてダイアログを閉じます。

JBoss EAP Maven リポジトリーが Red Hat CodeReady Studio との使用向けに設定されます。

2.3.3. プロジェクト依存関係の管理

ここでは、Red Hat JBoss Enterprise Application Platform 向けの BOM (Bill of Materials) POM の使用方法について説明します。

BOM は、指定モジュールに対するすべてのランタイム依存関係のバージョンを指定する Maven pom.xml (POM) ファイルです。バージョン依存関係は、ファイルの依存関係管理セクションにリストされています。

プロジェクトは、groupId:artifactId:version (GAV) をプロジェクト pom.xml ファイルの依存関係管理セクションに追加し、<scope>import</scope> および <type>pom</type> 要素の値を指定して、BOM を使用します。

注記

多くの場合、プロジェクト POM ファイルの依存関係によって provided スコープが使用されます。これは、これらのクラスが実行時にアプリケーションサーバーによって提供され、ユーザーアプリケーションとともにパッケージ化する必要がないためです。

サポート対象の Maven アーティファクト

製品のビルドプロセスの一部として、JBoss EAP のすべてのランタイムコンポーネントは制御された環境でソースからビルドされます。これにより、バイナリーアーティファクトに悪意のあるコードが含まれないようにし、製品のライフサイクルが終了するまでサポートを提供できるようにします。これらのアーティファクトは、1.0.0-redhat-1 のように使用される -redhat バージョン修飾子によって簡単に識別可能です。

サポートされるアーティファクトをビルド設定 pom.xml ファイルに追加すると、ローカルビルドおよびテスト向けの適切なバイナリーアーティファクトがビルドで使用されるようになります。-redhat バージョンのアーティファクトは、サポートされるパブリック API の一部とは限らず、今後の改訂で変更されることがあります。サポートされるパブリック API の詳細は、本リリースに含まれる Javadoc ドキュメント を参照してください。

たとえば、サポートされているバージョンの Hibernate を使用するには、ビルド設定に以下のようなコードを追加します。

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.3.1.Final-redhat-1</version>
  <scope>provided</scope>
</dependency>

上記の例には、<version/> の値が含まれていることに注意してください。ただし、依存関係バージョンの設定には、Maven の依存関係管理を使用することが推奨されます。

依存関係管理

Maven には、ビルド全体で直接的および推移的な依存関係のバージョンを管理するメカニズムが含まれています。依存関係管理の使用に関する一般的な情報は、Apache Maven Project の『Introduction to the Dependency Mechanism』を参照してください。

サポートされる Red Hat の依存関係を 1 つ以上ビルドに直接使用しても、ビルドの推移的な依存関係がすべて Red Hat アーティファクトによって完全にサポートされるとは限りません。Maven のビルドでは、Maven の中央リポジトリーおよびその他の Maven リポジトリーから複数のアーティファクトソースの組み合わせが使用することが一般的です。

JBoss EAP Maven リポジトリーには、サポートされるすべての JBoss EAP バイナリーアーティファクトを指定する依存関係管理 BOM が含まれています。この BOM は、ビルドの直接的および推移的依存関係に対して、サポートされる JBoss EAP 依存関係の優先順位を決定するためにビルドで使用できます。つまり、推移的な依存関係が、サポートされる正しい依存関係バージョン (該当する場合) に対して管理されます。この BOM のバージョンは、JBoss EAP リリースのバージョンと一致します。

<dependencyManagement>
  <dependencies>
    ...
    <dependency>
      <groupId>org.jboss.bom</groupId>
      <artifactId>eap-runtime-artifacts</artifactId>
      <version>7.2.0.GA</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>
注記

JBoss EAP 7 では、この BOM の名前が eap6-supported-artifacts から eap-runtime-artifacts に変更されました。この変更の目的は、この POM のアーティファクトが JBoss EAP ランタイムの一部であるが、必ずしもサポートされるパブリック API の一部ではないことを明確にすることです。一部の JAR には、リリース間で変更される可能性がある内部 API と機能が含まれます。

JBoss EAP Java EE 仕様の BOM

jboss-javaee-8.0 BOM には、JBoss EAP によって使用される Java EE 仕様の API JAR が含まれています。

プロジェクトでこの BOM を使用するには、最初に groupIdorg.jboss.spec を指定して、POM ファイルの dependencyManagement セクションにある jboss-javaee-8.0 BOM の依存関係を追加し、アプリケーションが必要とする特定の API の依存関係を追加します。API は jboss-javaee-8.0 BOM に含まれているため、これらの依存関係はバージョンを必要とせず、provided の範囲を使用します。

以下の例は、jboss-javaee-8.0 BOM の 1.0.0.Alpha1 を使用し、Servlet および JSP API の依存関係を追加します。

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.jboss.spec</groupId>
      <artifactId>jboss-javaee-8.0</artifactId>
      <version>1.0.0.Alpha1</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.jboss.spec.javax.servlet</groupId>
    <artifactId>jboss-servlet-api_4.0_spec</artifactId>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>org.jboss.spec.javax.servlet.jsp</groupId>
    <artifactId>jboss-jsp-api_2.3_spec</artifactId>
    <scope>provided</scope>
  </dependency>
  ...
</dependencies>
注記

JBoss EAP は、ほとんどの製品コンポーネントの API に対する BOM をパッケージ化および提供します。これらの BOM の多くは、org.jboss.bomgroupId を用いて、大きな単一の jboss-eap-javaee8 BOM にパッケージ化されます。jboss-javaee-8.0 BOM の groupIdorg.jboss.spec で、この大きな BOM に含まれます。そのため、この BOM にパッケージ化された追加の JBoss EAP 依存関係を使用する場合は 1 つの jboss-eap-javaee8 BOM をプロジェクトの POM ファイルに追加でき、jboss-javaee-8.0 およびその他の BOM 依存関係を個別に追加する必要はありません。

アプリケーション開発に利用できる JBoss EAP BOM

以下の表は、アプリケーションの開発に使用できる Maven BOM を示しています。

表2.1 JBoss BOM

BOM アーティファクト IDユースケース

jboss-eap-javaee8

JBoss EAP Java EE 8 API および追加の JBoss EAP API JAR をサポート。

jboss-eap-javaee8-with-spring4

jboss-eap-javaee8 および推奨される Spring 4 バージョン。

jboss-eap-javaee8-with-tools

jboss-eap-javaee8 および Arquillian などの開発ツール

注記

ほとんどのユースケースに対して使用方法を単純にするために、JBoss EAP 6 のこれらの BOM は少ない数の BOM に統合されました。Hibernate、ロギング、トランザクション、メッセージング、および他のパブリック API JAR は jboss-eap-javaee8 BOM に含まれるようになり、各ユースケースで個別の BOM が必要なくなりました。

以下の例では、7.2.0.GA バージョンの jboss-eap-javaee8 BOM が使用されています。

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.jboss.bom</groupId>
      <artifactId>jboss-eap-javaee8</artifactId>
      <version>7.2.0.GA</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <scope>provided</scope>
  </dependency>
  ...
</dependencies>
JBoss EAP クライアント BOM

クライアント BOM は、依存関係管理セクションを作成したり、依存関係を定義したりしません。クライアント BOM は他の BOM の集合体であり、リモートクライアントのユースケースに必要な依存関係のセットをパッケージ化するために使用されます。

wildfly-ejb-client-bom および wildfly-jms-client-bom の BOM は jboss-eap-javaee8 BOM により管理されるため、プロジェクト依存関係でバージョンを管理する必要はありません。

以下に wildfly-ejb-client-bom および wildfly-jms-client-bom クライアント BOM 依存関係をプロジェクトに追加する方法の例を示します。

<dependencyManagement>
  <dependencies>
    <!-- JBoss stack of the Java EE APIs and related components.  -->
    <dependency>
      <groupId>org.jboss.bom</groupId>
      <artifactId>jboss-eap-javaee8</artifactId>
      <version>7.2.0.GA</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
  ...
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.jboss.eap</groupId>
    <artifactId>wildfly-ejb-client-bom</artifactId>
    <type>pom</type>
  </dependency>
  <dependency>
    <groupId>org.jboss.eap</groupId>
    <artifactId>wildfly-jms-client-bom</artifactId>
    <type>pom</type>
  </dependency>
  ...
</dependencies>

Maven 依存関係および BOM POM ファイルの詳細は、『Apache Maven Project - Introduction to the Dependency Mechanism』を参照してください。