ローカル環境のWebLogic Serverに、warを自動デプロイする

WebLogic Maven プラグインには、ビルドした成果物をテスト環境に自動デプロイする機能があります。 今回は、この機能を使って、ローカルPCで稼働するDockerコンテナ上のWebLogic Serverに、Mavenから自動デプロイしてみます。

この機能の本来の用途は、インテグレーションテスト等のテストフェーズを自動化することだと思いますが、これにとどまらず、実装フェーズでも活用できます。
例えば、UI画面の開発時など、コード修正→画面確認を繰り返して試行錯誤するような場面がありますが、こんなとき自動でデプロイができるととても作業が捗ります。

手順

0. WebLogic ServerがインストールされたDockerコンテナを用意する

本記事では、ローカル環境のVirtualBox上でLinux仮想マシンを動かし、その仮想マシンをDockerのホストとして利用します。
WebLogic ServerのDockerコンテナの作成手順は、過去の記事を参照ください。

また、DockerそのものとDocker on WebLogicの詳しい解説は、先日のWebLogic Server勉強会の資料が参考になりますので、こちらもぜひご参照ください(←宣伝)。

1. WebLogic Maven プラグインをインストールする

WebLogic Maven プラグインを、ローカル環境にインストールします。
こちらの手順も、過去の記事を参照ください。「1-2. WebLogic Mavenプラグインのインストール」までの作業をやれば良いはずです。

2. pom.xmlを編集する

以下の例のように、<build> > <plugins>タグの配下に、WebLogic Mavenプラグインの設定を記述します。

<build>
    <plugins>
        <plugin>
            <groupId>com.oracle.weblogic</groupId>
            <artifactId>weblogic-maven-plugin</artifactId>
            <version>12.2.1-0-0</version>
            <executions>
                <execution>
                    <id>wls-redeploy</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>redeploy</goal>
                    </goals>
                    <configuration>
                        <adminurl>t3://localhost:8001</adminurl>
                        <user>weblogic</user>
                        <password>welcome1</password>
                        <targets>AdminServer</targets>
                        <upload>true</upload>
                        <remote>false</remote>
                        <source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
                        <name>${project.build.finalName}</name>
                        <verbose>true</verbose>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

goalに"redeploy"を指定しているので、既にデプロイされている物があった場合、自動的に更新されます。

configration配下の記述は、環境に合わせて変更する必要があります。
各設定の意味は、以下のとおりです。

  • adminurl
  • user
    • WebLogic Serverの管理者ユーザーのユーザー名
  • password
    • WebLogic Serverの管理者ユーザーのパスワード
  • targets
    • ビルドした成果物のデプロイ先
  • upload
    • 成果物をアップロードするかどうか(管理コンソールからデプロイするときの、アップロード操作に相当すると思われる)
  • remote
    • サーバーがリモートに設置されているかどうか
  • source
    • 成果物(warなど)のパス
  • name
    • 成果物の名前
  • verbose
    • デプロイ時に詳細メッセージを出力するかどうか

今回のように、VirtualBox上の仮想マシン上のDockerコンテナでWebLogic Serverを動かしている場合、uploadは"true"、remoteは"false"が正解のようです。

3. ビルドを実行する

実際にビルドを実行してみます。以下のコマンドを実行します。

> mvn clean pre-integration-test

warのビルドが終わると、デプロイが開始されます。
以下のように、最終的に"redeploy 完了"のメッセージが表示されれば、デプロイ完了です。

[INFO] --- weblogic-maven-plugin:12.2.1-0-0:redeploy (wls-redeploy) @ linguistic
s ---
[INFO] Command flags are: -noexit -redeploy -username weblogic -password *******
-name linguistics-1.0 -source C:\Users\hhayakaw\Documents\GitRepository\linguis
tics\app\target\linguistics-1.0.war -targets AdminServer -upload -verbose -admin
url t3://localhost:8001
…
ターゲットの状態: サーバー AdminServerでredeploy 完了

実際に所定のURLにアクセスすると、アプリケーションが稼働していることがわかると思います。

せっかくなので、デプロイが完了したらブラウザで開くところまで一気にやるようにすると、さらにいい感じです。

WebLogic Maven Pluginを使った自動デプロイの手順は、以上です。
WebLogic Maven Pluginは、使いこなせるとまだまだ色々できそうなので、探求を続けていきたいところです。