自分用の Eclipse 開発環境メモ。『Web+DB Press vol.35 の実演テスト駆動開発』 を読んで、自分用の開発環境テンプレートを作ろうとやっと決心したので ( ..)φメモメモ (といっても、ほとんど記事の内容そのままだけど)

ちなみに、TDD(Test Driven Development: テスト駆動開発) の利点は、「テスト可能なコードになる」、「コード利用者の視点を得る事ができる」、「インターフェースと実装を分けて考えることができる」。 2番目のコード利用者の視点を得ることができるというのに特に共感できる。自分の中で、インターフェースはユーザ(コードの利用者)が決めるものだ!というポリシーがあるので。t-wadaさんには、一度だけお会いしたことがある(名刺交換だけだけど)。

Eclipse 環境

ライブラリ

Eclipse プラグイン

キーバインド

  • 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 はそういうことがができたんだけど。

Web アプリケーション起動時に HSQLDB を起動する