自分用の Eclipse 開発環境メモ。『Web+DB Press vol.35 の実演テスト駆動開発』 を読んで、自分用の開発環境テンプレートを作ろうとやっと決心したので ( ..)φメモメモ (といっても、ほとんど記事の内容そのままだけど)
ちなみに、TDD(Test Driven Development: テスト駆動開発) の利点は、「テスト可能なコードになる」、「コード利用者の視点を得る事ができる」、「インターフェースと実装を分けて考えることができる」。 2番目のコード利用者の視点を得ることができるというのに特に共感できる。自分の中で、インターフェースはユーザ(コードの利用者)が決めるものだ!というポリシーがあるので。t-wadaさんには、一度だけお会いしたことがある(名刺交換だけだけど)。
Eclipse 環境
ライブラリ
Eclipse プラグイン
- Maven 2.x Plug-in for Eclipse (m2eclipse)
- Subclipse
- DbEdit Plugin for Eclipse (http://dbedit.sourceforge.net/update)
- XMLBuddy
キーバインド
- Ctrl + U (Linu Up)
- Ctrl + L (Next Column)
- Ctrl + N (Line Down)
- Ctrl + H (Prev Column)
Web アプリケーション用のディレクトリ構成
1. Web アプリケーション用のディレクトリを作成する
Eclipse のワークスペースで下記のコマンドを実行する
> mvn archetype:create -DgroupId=<<プロジェクトのパッケージ 例:com.hamasyou.webapp>> -DartifactId=<<プロジェクト名(アプリケーションコンテキスト名)>> -DarchetypeArtifactId=maven-archetype-webapp
2. Eclipse プロジェクトに変換する
作成されたディレクトリに移動して下記のコマンドを実行する。
> mvn eclipse:eclipse
3. Eclipse にインポートする
「ファイル」-「インポート」-「既存プロジェクトをワークスペースへ」
4. ソースディレクトリの作成する
「新規」-「ソースフォルダ」で下記のソースフォルダを作成する。
- src/main/java
- src/test/java
- src/test/resources
5. Maven2 の pom.xml にソースディレクトリを要素を記述する
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hamasyou.todocal</groupId>
<artifactId>todocal</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>TODO Calendar</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>todocal</finalName>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
</build>
</project>
6. Eclipse の出力フォルダを変更する
パッケージエクスプローラのプロジェクトのプロパティで 「ビルドパス」-「「出力フォルダ」 を選択して、「特定の出力フォルダ」を有効にして src/test/java と src/test/resources の出力フォルダを 「target/test-classes」 等にする。
7. m2eclipse プラグイン環境変数を削除する
パッケージエクスプローラのプロジェクトのプロパティの 「ビルドパス」-「ビルドパスの構成」 から M2_REPO の行を除去する。 ※ m2eclipse を使う場合は M2_REPO の参照は不要らしい。
8. Eclipse の m2eclipse プラグインを有効にする
パッケージエクスプローラのプロジェクトを右クリックし、「Maven2」-「Enable」 をクリックする。
9. Maven2 がライブラリをダウンロードするときに一緒にソースコードもダウンロードする
メニューの 「ウィンドウ」-「設定」 の Maven2 の設定から 「Download Artifact Sources」 にチェックを入れる。
テスト環境を整える
1. jetty プラグインを設定する
pom.xml に下記を記述する
<!--中略-->
<build>
<finalName>todocal</finalName>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<contextPath>/todocal</contextPath>
<scanIntervalSeconds>10</scanIntervalSeconds>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>6000</maxIdleTime>
</connector>
</connectors>
</configuration>
</plugin>
</plugins>
</build>
</project>
2. jetty サーバを起動する
プロジェクトディレクトリに移動して、下記のコマンドを実行する。
> mvn jetty:run
jetty はクラスファイルの更新検知機能があるので、クラスファイルが更新されると自動で再起動される。
3. HttpUnit と Apache Geronimo をインストールする
pom.xml に下記を記述する
<!--中略-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>httpunit</groupId>
<artifactId>httpunit</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>geronimo-spec</groupId>
<artifactId>geronimo-spec-servlet</artifactId>
<version>2.4-rc4</version>
<scope>provided</scope>
</dependency>
</dependencies>
<!--中略-->
その他
maven2 のプラグインで、アプリケーションがアプリケーションサーバにロードされたタイミングで Apache Derby も起動するようなのがないかなぁ・・・。HSQLDB はそういうことがができたんだけど。