JavaEE 7 Cargo TrackerアプリケーションをOracle Developer Cloudを使って動かす（ビルド編）

# はじめに
Java EE7のサンプルアプリケーションCargo TrackerをDeveloper Cloudでビルドしてみます。

Cargo Trackerについてはこちら。
https://cargotracker.java.net/

上記サイトのオープンソースのコードはSubversion管理されているので、自分の方でGitとしてコピーを以下にアップしてありますので、これを利用します。
https://github.com/nobuhikosekiya/cargotracker-copy

Developer Cloud Serviceをフリートライアルとして利用する手順はこちら
[Oracle Developer Cloud Serviceをフリートライアルで使い始める](http://qiita.com/nobuhikosekiya/items/511ac114d15f2c8b0cff)

# Cargo TrackerをDeveloper CloudのHudsonでビルド
## Cargo TrackerのコードをGitリポジトリに取り込む

まずはDeveloper Cloud内のGitリポジトリをHomeタブの画面から新規作成し、作成の際に以下のGitHubからインポートしてください。
https://github.com/nobuhikosekiya/cargotracker-copy.git

![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/cee48f80-f8f6-deb7-bdc0-92ff93a24584.png)
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/740f05ce-34bf-fe22-ac26-71b0f7e6c9e6.png)

## ビルドジョブの作成
次に、Hudsonのビルドジョブを作成します。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/d82543ac-36b6-66fa-81f5-fc3ef3f21d1f.png)

![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/82e78381-355a-cd76-c329-2f98ee7cc65b.png)

ジョブの設定画面の中は設定カテゴリ毎にタブで分かれています。

先ほどのGitリポジトリのコードを使うので、以下のようにそれを指定します。（プルダウンで自動的にプロジェクト内のGitリポジトリを表示してくれるのでわざわざURLの入力が必要なく便利です。）
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/7b29a101-608b-6c23-4a16-aa199a673e55.png)

次にビルドアクションとしてMaven 3を実行するステップを追加します。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/0bda8152-ca4f-80f7-a6aa-84fb89338bba.png)

Maven 3の設定は色々とありますが、今回はデフォルトのままで大丈夫です。Goalとpom.xmlの場所が重要です。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/d0bec253-ce89-bb7f-7211-d56fe7b298f9.png)

最後、Post BuildタブではMavenがビルドしたwarファイルをアーカイブ（保存）する設定を入れます。Discard old artifactsを指定すると、ビルドを繰り返した場合古いのは破棄されますので、今回はこれも指定しておき、Hudsonの容量を節約するようにします。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/1ef42ff9-638c-ae8d-5afb-3c737f5aa4f5.png)

Saveボタン押してジョブの設定を終えた後、Build Nowボタンでビルド開始です。（もしもう一度設定を変更するときはConfigureボタンを押します）
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/7a71f349-b865-117b-8123-ce554e321215.png)

ビルド結果画面です。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/d7cab444-6b95-46e9-2d50-d46b5c70b6c1.png)

ビルド番号をクリックすると、そのビルドで生成されたwarファイルを確認＆ダウンロードできます。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/cfa80720-382a-d198-4ce3-8c5e141652ac.png)

今回のCargo Trackerですが、Java EE7をサポートするアプリケーションサーバーならどこでも動かせると思いますが、基本的にはGlassFishとWebLogicがテストされています。

以下https://cargotracker.java.net/ より
>The project currently runs on Java EE 7/GlassFish 4 and Java SE 8 by default. You can also run the project using WebLogic 12.2.1 and Java SE 8 using these instructions.

いま作成したwarファイルをダウンロードしてオンプレミスのGlassFish 4でデプロイすれば動作すると思います。後ほど別の投稿でOracle Application Container Cloudを使ってクラウド上のGlassFishでアプリケーションを実行する手順を紹介します。

## ビルドジョブの作成（WebLogic用）

WebLogicで動かす場合、少しweb.xml内の設定をGlassFish版から変更する必要があります。変更は簡単にできるように既にコードに組まれています。Mavenを実行するときにプロファイルとしてweblogicとしていするだけです。（興味があればpom.xmlのコードを表示してprofileの辺りをみてみてください。）

新たにWebLogic用のwarファイルを作成するためのジョブを作成します。以下のように、さきほどのジョブをコピーして作成します。名前はbuild-cargo-tracker-wlsとします。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/2b02de6a-1135-c109-595b-86b1bbfe080e.png)
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/5ebf4aa4-f6f0-25ef-9ed1-93605c9344d4.png)

新しいジョブの追加の変更点は下の赤枠の設定を追加するだけです。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/58ec133e-d4cf-8efd-99d0-4140368f3517.png)

これでSaveしてビルド実行してください。ただし、コピーから作成したジョブは、最初はdisableな状態でビルドボタンが有効になっていませんので、一度Enableボタンを押してからビルドボタンを有効にする必要があります。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/6dc6feb8-9e61-a0e9-f402-c6284e99cc87.png)

ビルドが成功すれば同じようにwarファイルがHudsonに保存されてダウンロード可能になります。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/755eafb6-e284-df37-c76f-b7a863b7eaec.png)

こちらのwarファイルはダウンロードして、オンプレミスのWebLogic Server 12.2.1で動作できます。（Java EE7をサポートするWebLogicはバージョン12.2.1からです）

これも、別の投稿でJava Cloud Service上のWebLogic Serverで動作させる手順を書きたいと思います。

# おわりに
今回はソースコードをGitに登録し、Developer CloudのHudsonでビルドするところまでを行いました。次回以降はOracle Cloudの実行環境にこれらをデプロイして動かしてみたいと思います。