WebLogic Mavenプラグインを使って依存モジュールの解決を楽にする

jBatch×WebLogicのネタも考え中ですが、閑話休題ということで。

以下のような開発をしているエンジニアの方は、WebLogic Mavenプラグインを利用するのがおすすめです。

  • WebLogic Serverで動かすアプリケーションを開発している
  • アプリケーションのビルドにMavenを利用している

例えば、Servlet-APIJDBCドライバのjarファイルを、pom.xmlにひとつひとつ書いて取得してたりしないでしょうか。しかも、WebLogicに入っているモジュールのバージョンを確認して、自力でローカルリポジトリにインストールしたりとか…。

WebLogic Mavenプラグインを使うと、個別にpom.xmlに記述せずとも、WebLogicに入っているモジュールを自動取得することができます。
手間が減るのはもちろん、コンパイルとランタイム間での、バージョン不整合を防止することができます。

というわけで、WebLogic Mavenプラグインを使って、WebLogicに入っているモジュール解決する手順を紹介します。

1. 手順

1-1. 前提条件

この手順は、以下の条件を満たしていることが前提です。

  • ビルドを実行するマシンにmvnがインストールされている
  • WebLogic Serverの、ORACLE_HOMEが参照できる

また、これ移行の手順は、WebLogic Server 12.2.1を使う想定で書きます。

1-2. WebLogic Mavenプラグインのインストール

以下のコマンドを実行します(WebLogic Server 12.2.1 の場合)

> cd ${ORACLE_HOME}\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1
> mvn install:install-file -DpomFile=oracle-maven-sync-12.2.1.pom -Dfile=oracle-maven-sync-12.2.1.jar

※${ORACLE_HOME}は環境に合わせて変更してください。

以下のような内容がコンソールに出力されればOKです。

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom---
[INFO] Installing C:\WLSHandsOn\mw\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1\oracle-maven-sync-12.2.1.jar to C:\Users\hhayakaw\.m2\repository\com\oracle\maven\oracle-maven-sync\12.2.1-0-0\oracle-maven-sync-12.2.1-0-0.jar
[INFO] Installing C:\WLSHandsOn\mw\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1\oracle-maven-sync-12.2.1.pom to C:\Users\hhayakaw\.m2\repository\com\oracle\maven\oracle-maven-sync\12.2.1-0-0\oracle-maven-sync-12.2.1-0-0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.076 s
[INFO] Finished at: 2016-03-07T09:32:09+09:00
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------

1-3. ローカルリポジトリにモジュールを取り込む

MavenのローカルリポジトリOracle_Home配下からモジュールを取り込みます。

以下のコマンドを実行します(12.2.1の場合)

>mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=${ORACLE_HOME}

※${ORACLE_HOME}は環境に合わせて変更してください。

取り込むモジュールがたくさんあるので、コンソールに大量のメッセージが出力されますが、最終的に以下の内容が出力されれば成功のようです。

[INFO] SUMMARY
[INFO] ------------------------------------------------------------------------
[INFO] PUSH SUMMARY - ARTIFACTS PROCESSED SUCCESSFULLY
[INFO] ------------------------------------------------------------------------
[INFO] Number of artifacts pushed: 1013
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] PUSH SUMMARY - ERRORS ENCOUNTERED
[INFO] ------------------------------------------------------------------------
[INFO] No issues encountered.
[INFO]
[INFO] IMPORTANT NOTE
[INFO] This operation may have added/updated archetypes in your repository.
[INFO] To update your archetype catalog, you should run:
[INFO] 'mvn archetype:crawl -Dcatalog=$HOME/.m2/archetype-catalog.xml'
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:51 min
[INFO] Finished at: 2016-03-07T09:39:33+09:00
[INFO] Final Memory: 11M/162M
[INFO] ------------------------------------------------------------------------

1-4. pom.xmlを編集する

ビルドするプロジェクトのpom.xml<dependency>と、<plugin>タグを追加します。

以下の様に、両タグを記述します。また、既存の記述の不要な<dependency>は削除しておきます。

<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"><dependencies><dependency>
            <groupId>com.oracle.weblogic</groupId>
            <artifactId>weblogic-server-pom</artifactId>
            <version>12.2.1-0-0</version>
            <type>pom</type>
            <scope>provided</scope>
        </dependency>
    </dependencies><build>
        <plugins><plugin>
                <groupId>com.oracle.weblogic</groupId>
                <artifactId>weblogic-maven-plugin</artifactId>
                <version>12.2.1-0-0</version>
            </plugin>
        </plugins>
    </build></project>

1-5. ビルドする

普段どおりビルドを実行します。例えば、

> mvn clean package

初回は結構時間がかかります。WebLogicから取り込んだモジュールの、メタデータのダウンロードらしき処理がおこなわれます。

2. 適用例

例えば、以前紹介したjBatchのサンプルアプリケーションですと、以下のモジュールの記述を削減できます。

  • javax.batch-api
  • cdi-api
  • javax.inject
  • javax.transaction-api
  • javax.ws.rs-api
  • javax.persistence

実際のコードはこちらJava EE系が軒並み減らせました。


WebLogic Mavneプラグインの機能は、今回紹介したものだけではありません。ビルドしたものをテスト環境に自動デプロイしたり、WLSTを実行したりなど、もっと高度な機能があります。

詳細は公式のドキュメントを参照ください。