EclipseでMavenプロジェクトを作ってGithubで管理


EclipseにおけるMavenの導入法、および簡単なWebアプリプロジェクトを作って動作確認。折角なのでコードはGithubで管理してみましょう、という記事です。
お恥ずかしながらこの手のツールチェインは殆ど実開発PJで利用したことはありません。いつまでも慣れたやり方にとらわれてはいけませんね、ということで気合を入れて入門していきたいところです。

## 環境
+ IDE：Eclipse 4.3 (Kepler)
	+ ソース管理： GitHub
	+ ビルド自動化: Maven (3.1.1)

## 前提
以下が終わっている前提で話を進めています。

1. GitHubアカウント登録とSSH公開鍵設定 - [参考サイト](http://d.hatena.ne.jp/shim0mura/20111212/1323660740)
1. Mavenのインストール - [参考サイト](http://oscasierra.net/2013/05/install-maven-3-0-mac/)
1. Eclipseのインストール
	- [こちらのサイト](http://www.eclipse.org/downloads/)からバージョン4.3.xのJava EE Developers向けのリリースをインストールします。

## Eclipseに関連プラグインをインストール
__Help__ > __Eclipse Marketplace__ でキーワード検索して __Install__ するだけでOKです。

+ Mavenプラグイン (__m2e__)
+ Gitプラグイン (__EGit__)

## GitHubにレポジトリを作る
GitHubにログインし、公開レポジトリを作成します。
今回は適当に「maven_webapptmpl」ってな感じにして空のレポジトリを作成しました。

## m2e設定
1. __Preferences__ > __Maven__ と進んで畳み込みメニューを展開します。
1. __Installentions__ で使用したいMavenインストールを追加して選択します。 __Global settings__ で指定したインストールの`settings.xml`が選択されていることを確認します。
1. __User Settings__ でユーザ設定ファイルを選択します。上記Global settingsファイルと同じでもOKです。

## EGit設定
1. __Window__ > __Open Perspective__ > __Git__ の順に選択してパースペクティブを開きます。
1. __Clone Git Repository__ から先ほど作成した「maven_webapptmpl.git」レポジトリをクローンします。プロトコルは「https」です。 __Authentication__ にはGitHubアカウントの認証情報を記入します。
1. `Finish`でリモートリポジトリが正常にCloneされれば完了です。

## Maven Webアプリプロジェクトを作る

### プロジェクトの新規作成
Maven Webアプリプロジェクトを作ります。ウイザードが開くので、適宜選択していけばOKです。

1. __Project Explorer__ で右クリック > __New__ から __Maven Project__ を探してクリック
1. __Use default Workspace location__ にチェックが入っていることを確認して`Next >`をクリック
1. __Artifact Id__ が __maven-archetype-webapp__ のものを選択して`Next >`をクリック
1. 任意の __Group Id__ と __Artifact Id__ (今回はwebappsampleとしました) 、 __Version__ および __Package__ を入力して`Finish`をクリック

### pom.xmlの編集
この状態でビルドを行えばWARファイルを作ってくれます。

#### プロジェクトの文字コードをUTF-8に
プラットフォームローカルの文字コードを使っているとそのプラットフォーム依存なプロジェクトになってしまいます(実際Mavenビルドを行うと以下のようなWarningが出ます)。

> Warning
Sun Dec 01 15:04:47 JST 2013
Using platform encoding (US-ASCII actually) to copy filtered resources, i.e. build is platform dependent!

`pom.xml`に明示的にプロジェクトの文字コードを指定することで回避できます。

```pom.xml
<project>
  <properties>
  	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
</project>
```

#### Jettyプラグインでローカル動作確認
ビルドしたWARファイルをどこかのWebアプリケーションコンテナにデプロイして動作確認してもいいのですが、MavenのJettyプラグインを使えばEclipseから直接動作確認できます。これも`pom.xml`で指定します。

```pom.xml
  <build>
    <finalName>webappsample</finalName>
    <plugins>
    	<plugin>
    		<groupId>org.mortbay.jetty</groupId>
    		<artifactId>maven-jetty-plugin</artifactId>
    		<version>6.1.17</version>
    	</plugin>
    </plugins>
  </build>
```
#### ビルドと動作確認
ちょっとソースを弄ってJettyプラグインで動作確認してみます。

1. `/src/main/webapp/index.jsp`を適当に編集して保存(そのままでもいいです)。
1. __Project Explorer__ 上のMavenプロジェクトを右クリック > __Run as__ から __Maven Build__ を選択します。
1. __Goals__ に「install」を記入して`Run`をクリックします。自動で依存プラグインのインストールとコンパイルが行われます。 `/target` ディレクトリ内にwarファイルができていればOKです。
1. __Project Explorer__ 上のMavenプロジェクトを右クリック > __Run as__ > __Run Configurations__ を選択します。
1. __Goals__ に「jetty:run」と記入して`Run`をクリックします。
1. `http://localhost:8080/webappsample`にアクセスします。意図した通りのIndex画面が表示されれば動作確認完了です。

## プロジェクトをGithubにpush

1. __Project Explorer__ 上のMavenプロジェクトを右クリック > __Team__ から __Share Project__ を選択します。
1. __Git__ が選択できるはずですので、選択して`Next >`をクリックします。
1. __Repository__ から先ほどクローンしてきたローカルレポジトリを選択して、`Finish`を選択します。
1. この時点では変更はコミットされていません。 __Project Explorer__ 上のMavenプロジェクトを右クリック > __Team__ から __Commit__ を選択します。コミットメッセージを入力し、コミットするファイルを選択して __Commit__ をクリックします。これでステージングが完了しました。
1. リモートリポジトリ(GitHub)にpushします。 __Project Explorer__ 上のMavenプロジェクトを右クリック > __Team__ から __Push to Upstream__ を選択します。特に問題なければGithubのリポジトリにプロジェクトがpushされたことが確認出来ると思います。

## 終わりに
今回はここまでです。
次回はこのWebアプリケーションをローカルのCloud Foundry環境にデプロイして実行してみます。