第6章 Maven リポジトリー

6.1. Maven について

Apache Maven は、ソフトウェアプロジェクトの構築および管理を行う Java アプリケーション開発で利用される分散型構築自動化ツールです。Maven は POM (Project Object Model) と呼ばれる設定 XML ファイルを利用して、プロジェクトプロパティーの定義や構築プロセスの管理を行います。POM ファイルはプロジェクトのモジュールやコンポーネントの依存関係、構築の順番、生成されるプロジェクトパッケージと出力のターゲットを定義します。この結果、プロジェクトは正しく統一された状態で構築されます。

Maven はレポジトリーを使用して Java ライブラリー、プラグイン、および他のビルドアーティファクトを格納します。リポジトリーはローカルまたはリモートのいずれかになります。ローカルリポジトリーは、ローカルマシンにキャッシュされたリモートリポジトリーからのアーティファクトのダウンロードです。リモートリポジトリーは、http:// (HTTP サーバーにある場合) や file:// (ファイルサーバーにある場合) などの一般的なプロトコルを使用してアクセスされる他のリポジトリーです。デフォルトのリポジトリーは、パブリックリモートの Maven 2 Central Repository です。

Maven の設定は、settings.xml ファイルを変更して実行されます。グローバルな Maven 設定は、M2_HOME/conf/settings.xml ファイルまたは USER_HOME/.m2/settings.xml ファイルのユーザーレベル設定で指定できます。

Maven の詳細については、Welcome to Apache Maven のページを参照してください。

Maven リポジトリーの詳細については、Apache Maven Project — Introduction to Repositories の記事を参照してください。

Maven POM ファイルの詳細については Apache Maven Project — POM Reference を参照してください。

注記

Red Hat JBoss 製品は maven 3.0.x でビルドされているので、このバージョンが独自の SwitchYard アプリケーションをビルドするのに推奨される maven バージョンです。

6.2. 提供される Maven リポジトリー

本リリースでは、Red Hat JBoss BPM Suite をベースとするアプリケーションを構築するために必要なアーティファクトが含まれるリポジトリーのセットが提供されます。適切な構築機能を提供するには、これらのリポジトリーと Maven セントラルリポジトリーを使用するよう Maven を設定する必要があります。

同じ機能を提供する、交換可能な 2 つのリポジトリーのセットが提供されます。1 つ目のセットはローカルファイルシステムでダウンロードおよび保存できます。2 つ目のリポジトリーはオンラインでホストされ、リモートリポジトリーとして使用されます。

重要

オンラインリモートリポジトリーのセットは、テクノロジープレビューのコンポーネントのソースです。そのため、パッチの対象ではなく、開発環境の使用のみがサポートされます。実稼働環境でオンラインリポジトリーのセットを使用すると、セキュリティーの脆弱性の原因となる可能性があるためユースケースではサポートされません。詳細は JBoss Enterprise Maven Repository を参照してください。

6.3. ファイルシステムリポジトリーを使用するための Maven を設定

概要

オンラインリポジトリーを使用できない場合は、必要なリポジトリーをローカルにダウンロードして設定する必要があります。

  1. 必要なリポジトリーが含まれる以下の ZIP アーカイブをダウンロードします。

  2. ダウンロードした ZIP ファイルをローカルファイルシステムの任意の場所に展開します。
  3. 展開されていないリポジトリーのエントリーを Maven の settings.xml ファイルに追加します。以下のコード例には、リポジトリーがあるプロファイルと、リポジトリーへのアクセス用の認証設定、プロファイルのアクティベートエントリーが含まれます。

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository/>
      <profiles>
      <!-- Profile with local repositories required by
           Red Hat JBoss BRMS/Red Hat JBoss BPM Suite -->
        <profile>
          <id>brms-bpms-local-profile</id>
          <repositories>
            <repository>
              <id>jboss-brms-bpmsuite-repository</id>
              <name>BRMS/BPMS 6.4.0 GA Repository</name>
              <url>
                file://<!-- path to the repository -->
                      /jboss-brms-bpmsuite-6.4.0.GA-maven-repository/maven-repository
              </url>
              <layout>default</layout>
              <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
              </releases>
              <snapshots>
                <enabled>false</enabled>
                <updatePolicy>never</updatePolicy>
              </snapshots>
            </repository>
          </repositories>
          <pluginRepositories>
            <pluginRepository>
              <id>jboss-brms-bpmsuite-repository</id>
              <name>BRMS/BPMS 6.4.0.GA Repository</name>
              <url>
                file://<!-- path to the repository -->
                      /jboss-brms-bpmsuite-6.4.0.GA-maven-repository/maven-repository
              </url>
              <layout>default</layout>
              <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
              </releases>
              <snapshots>
                <enabled>false</enabled>
                <updatePolicy>never</updatePolicy>
              </snapshots>
            </pluginRepository>
          </pluginRepositories>
        </profile>
      </profiles>
    
      <servers>
        <!-- Configuring pre-emptive authentication for the repository server -->
        <server>
          <id>brms-bpms-m2-repo</id>
          <username>admin</username>
          <password>admin</password>
          <configuration>
            <wagonProvider>httpclient</wagonProvider>
            <httpConfiguration>
              <all>
                <usePreemptive>true</usePreemptive>
              </all>
            </httpConfiguration>
          </configuration>
        </server>
    
        <!-- Alternative to enabling pre-emptive authentication - configuring
             the Authorization HTTP header with Base64-encoded credentials
        <server>
          <id>brms-bpms-m2-repo</id>
          <configuration>
            <httpHeaders>
              <property>
                <name>Authorization</name>
                <value>Basic YWRtaW46YWRtaW4=</value>
              </property>
            </httpHeaders>
          </configuration>
        </server>
        -->
      </servers>
    
      <activeProfiles>
        <!-- Activation of the Red Hat JBoss BRMS/Red Hat JBoss BPM Suite profile -->
        <activeProfile>brms-bpms-local-profile</activeProfile>
      </activeProfiles>
    </settings>

結果

Maven リポジトリーがダウンロードされ、ローカルファイルシステムで展開された後、Maven の settings.xml ファイルに登録されます。Maven の構築を実行するときに使用できます。

6.3.1. トラブルシューティング

6.3.1.1. アプリケーションを構築またはデプロイするときにまだエラーが表示されます。

プロジェクトをビルドまたはデプロイするときに、以下のエラーの 1 つまたは両方が発生し、失敗します。

  • [ERROR] Failed to execute goal on project PROJECT_NAME
  • Could not find artifact ARTIFACT_NAME

キャッシュされたローカル Maven リポジトリーに古いアーティファクトが含まれている可能性があります。

この問題を解決するには、キャッシュされたローカルディレクトリーを削除します。このディレクトリーは Linux の場合は ~/.m2/repository/ ディレクトリー、Windows の場合は %SystemDrive%\Users\USERNAME\.m2\repository\ ディレクトリーになります。mvn clean install -U を実行します。これにより、次回構築を行うと Maven が必要なアーティファクトの適切なバージョンをダウンロードするようになります。

6.3.1.2. Red Hat JBoss Developer Studio が古い Maven 設定を使用します。

Maven 設定を更新しても、この設定は Red Hat JBoss Developer Studio には反映されません。

Maven の settings.xml ファイルの編集時に Red Hat JBoss Developer Studio が実行されていると、この設定は Red Hat JBoss Developer Studio には反映されません。

IDE で Maven の設定を更新します。メニューから WindowPreferences を選択します。Preferences ウィンドウで、Maven を展開して User Settings を選択します。Update Settings ボタンをクリックして、Red Hat JBoss Developer Studio の Maven ユーザー設定を更新します。

Updating Maven Settings

6.4. オンラインリポジトリーを使用するための Maven を設定

Red Hat JBoss Data Virtualization に必要なオンラインリポジトリーは https://maven.repository.redhat.com/ga/ にあります。

Maven がプロジェクトの POM ファイルを使用してオンラインリポジトリーを設定することができますが、推奨されていません。

手順: オンラインリポジトリーを使用するための Maven を設定

  1. 以下のコードサンプルのように、オンラインリポジトリーと Maven の settings.xml ファイルにアクセスするための認証設定のエントリーを追加します。

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                                  http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <profiles>
        <!-- Profile with online repositories required by BRMS/BPMS -->
        <profile>
          <id>brms-bpms-online-profile</id>
          <repositories>
            <repository>
              <id>jboss-ga-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-ga-plugin-repository</id>
              <url>https://maven.repository.redhat.com/ga/</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>false</enabled>
              </snapshots>
            </pluginRepository>
          </pluginRepositories>
        </profile>
      </profiles>
    
      <servers>
        <!-- Configuring pre-emptive authentication for the repository server -->
        <server>
          <id>brms-bpms-m2-repo</id>
          <username>admin</username>
          <password>admin</password>
          <configuration>
            <wagonProvider>httpclient</wagonProvider>
            <httpConfiguration>
              <all>
                <usePreemptive>true</usePreemptive>
              </all>
            </httpConfiguration>
          </configuration>
        </server>
    
        <!-- Alternative to enabling pre-emptive authentication - configuring
             the Authorization HTTP header with Base64-encoded credentials
        <server>
          <id>brms-bpms-m2-repo</id>
          <configuration>
            <httpHeaders>
              <property>
                <name>Authorization</name>
                <value>Basic YWRtaW46YWRtaW4=</value>
              </property>
            </httpHeaders>
          </configuration>
        </server>
        -->
      </servers>
    
      <activeProfiles>
        <!-- Activation of the BRMS/BPMS profile -->
        <activeProfile>brms-bpms-online-profile</activeProfile>
      </activeProfiles>
    
    </settings>
  2. Red Hat JBoss Developer Studio の実行中に settings.xml ファイルを編集した場合には、IDE で Maven の設定を更新する必要があります。メニューから WindowPreferences を選択します。Preferences ウィンドウで、Maven を展開して User Settings を選択します。Update Settings ボタンをクリックして、Red Hat JBoss Developer Studio の Maven ユーザー設定を更新します。

    図6.1 Maven ユーザー設定の更新

    128

結果

Red Hat JBoss 製品向けに提供されるオンラインリポジトリーを使用するよう Maven が設定されます。

重要

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

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

この問題を解決するには、キャッシュされたローカルディレクトリーを削除します。このディレクトリーは Linux の場合は ~/.m2/repository/ ディレクトリー、Windows の場合は %SystemDrive%\Users\USERNAME\.m2\repository\ ディレクトリーになります。mvn clean install -U を実行します。これにより、次回構築を行うと Maven が必要なアーティファクトの適切なバージョンをダウンロードするようになります。

6.5. 依存関係管理

Red Hat JBoss BPM Suite プロジェクトで適切な Maven 依存関係を使用するには、関係する Bill Of Materials (BOM) ファイルをプロジェクトの pom.xml ファイルに追加する必要があります。BOM ファイルを追加し、提供された Maven リポジトリーからの推移的依存関係が適切なバージョンで確実にプロジェクトに含まれるようにします。

Red Hat JBoss BPM Suite Maven アーティファクトを使用するには、以下のいずれかを設定する必要があります。

必須の Maven セントラルオンラインリポジトリーは、Maven にデフォルトで設定されています。ローカルの Maven リポジトリーを選択した場合でも、プロジェクトを正しく機能させるには、オンラインリポジトリーに到達できる必要があります。

プロジェクト要件によっては、POM ファイルの依存関係のセクションで、以下の依存関係の 1 つを宣言します。バージョンに関する詳細情報は「サポートされるコンポーネントバージョン」を参照してください。

  • org.jboss.bom.brms:jboss-brms-bpmsuite-platform-bom:$VERSION
  • org.jboss.bom.brms:jboss-brms-bpmsuite-bom:$VERSION