Mac + Eclipse で Spring MVC (の個人メモ)


## Oracle JDK 1.8 インストール

* [Oracle ダウンロードサイト](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)から JDK 1.8 のパッケージをダウンロード
* ダウンロードしたパッケージをダブルクリックしてインストール
* 以下にインストールされる

```bash
ll /Library/Java/JavaVirtualMachines/
total 0
drwxr-xr-x  3 root  wheel  102 12  1 15:20 jdk1.8.0_20.jdk
```

* ~/.bash_profile に以下を追記

```bash
JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -v "1.8"`
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
```

* 設定反映

```bash
source ~/.bash_profile
```

* 正しくインストールされたことを確認

```bash
java -version

java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
```

## Tomcat 8 インストール

* [Tomcat ダウンロードサイト](http://tomcat.apache.org/download-80.cgi)から "Core" の "tar.gz" をダウンロード
* ダウンロードしたファイルを解凍して、/usr/local に移動

```bash
cd ~/Downloads
tar zxf apache-tomcat-8.0.15.tar.gz
mv apache-tomcat-8.0.15 /usr/local
ln -s /usr/local/apache-tomcat-8.0.15 /usr/local/tomcat
```

## Eclipse 4.4.1 (Luna) インストール

* [Eclipse ダウンロードサイト](http://www.eclipse.org/downloads/)から "Eclipse IDE for Java EE Developers" をダウンロード
* ダウンロードしたファイルを解凍して、/Applications に移動

```bash
cd ~/Downloads
tar zxf eclipse-jee-luna-SR1-macosx-cocoa-x86_64.tar.gz
mv eclipse /Applications/Eclipse4.4
```

## Eclipse 日本語化

* [Pleiades ダウンロードサイト](http://mergedoc.sourceforge.jp/index.html#/pleiades.html)から "安定版" をダウンロード
* ダウンロードしたファイルを解凍して、Eclipse インストールディレクトリに移動

```bash
cd ~/Downloads
unzip -q pleiades_1.5.0.zip
mv features/jp.sourceforge.mergedoc.pleiades /Applications/Eclipse4.4/features
mv plugins/jp.sourceforge.mergedoc.pleiades /Applications/Eclipse4.4/plugins
```

* /Applications/Eclipse4.4/Eclipse.app/Contents/MacOS/eclipse.ini の最終行に以下を追記

```bash
-javaagent:/Applications/Eclipse4.4/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar=default.splash
```

## Eclipse プラグインインストール

### Spring Tool Suite (STS) for Eclipse Luna (4.4)

* Spring フレームワークを使った開発を支援してくれるプラグイン
* プロジェクト作成とか入力補完とかが便利になる

### Veloeclipse

* Java テンプレートエンジンの Velocity で使用する VTL (Velocity Template Language) の作成を支援してくれるプラグイン
* シンタックスハイライトとか入力補完とかが便利になる

### JBoss Tools (Luna) 4.2.0 Final

* Hibernate ORM の開発を支援してくれるプラグイン？
* 設定ファイルの生成とかがラクになる？

## Eclipse プラグインインストール (おまけ)

### Eclipse Color Theme

* シンタックスハイライトをカスタマイズできるプラグイン
* たぶんデフォルトでインストール済み
* [Eclipse] -> [環境設定] -> [一般] -> [外観] -> [色テーマ] でテーマの変更が可能

### Eclipse Moonrise UI Theme

* 全体の外観を黒基調に変更できるプラグイン
* デフォルトでも "ダーク" のテーマがインストール済み
* [Eclipse] -> [環境設定] -> [一般] -> [外観] でテーマの変更が可能

### Vrapper

* Editor を vim ライクに使えるようになるプラグイン
* vimmer 必須
* ~/.vrapperrc で設定のカスタマイズが可能

## Eclipse 基本設定

* [一般] -> [エディター] -> [テキスト・エディター]
	* 表示されるタブ幅 : 4 (プロジェクトにより)
	* タブでスペースを挿入 (プロジェクトにより)
	* 行番号の表示 (ないと不便すぎ)

## 新規 Spring MVC プロジェクトの作成

* [ファイル] -> [新規] -> [その他] をクリック
* [Spring] -> [Spring プロジェクト] を選択して [次へ] をクリック
* [プロジェクト名] に任意のプロジェクト名を入力
	* 例) spring-test
* [テンプレート] から [Spring MVC Project] を選択して [次へ] をクリック
* [topLevelPackage] に任意のパッケージ名を入力して [完了] をクリック
	* 例) com.mywork.myapp

## Java バージョンの修正

* 新規プロジェクトで使用される Java バージョンにワークスペースのデフォルト (ここでは 1.8) が設定されてない！

### JRE システム・ライブラリー

* [spring-test] -> [JRE システム・ライブラリー] のコンテキストメニューから [プロパティ] をクリック
* "ワークスペースのデフォルト JRE (Java SE 8 [1.8.0_20])" を選択して [OK] をクリック

### プロジェクト・ファセット

* [spring-test] のコンテキストメニューから [プロパティ] をクリック
* [プロジェクト・ファセット] の Java バージョンを "1.8" に変更して [OK] をクリック

### Maven

* [spring-test] -> pom.xml を開く
* properties > java-version を 1.8 に変更
* build > plugins の artifactID: maven-compiler-plugin の configuration を以下のように修正
	* 修正前)
		* source: 1.6
		* target: 1.6
	* 修正後)
		* source: ${java-version}
		* target: ${java-version}


## 実行サーバーの設定

* [ファイル] -> [新規] -> [その他] をクリック
* [サーバー] -> [サーバー] を選択して [次へ] をクリック
* [Apache] -> [Tomcat v8.0 サーバー] を選択して [次へ] をクリック
* あー、ちょっとめんどくさくなってきた。。。

## 動作確認

* [spring-test] のコンテキストメニューから [実行] -> [サーバーで実行] をクリック
* ブラウザから http://localhost:8080/myapp/ にアクセス
	* コンテキストパス (/myapp) は、プロジェクト作成時に指定したパッケージ名が使われている
	* Tomcat の server.xml で変更可能
* 起動タイムアウトのエラーが表示されるようなら、タイムアウト時間を45秒から600秒とかに変更する