Date:  Wed, 19 May 2004 12:35:23 +0900
Subject:  【オブジェクト倶楽部: 2004-17 	号】

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.45 2004/05/19

■ I N D E X
┃
┣【Topics】オブジェクト倶楽部HPリニューアル!
┣【Topics】オブジェクト倶楽部納涼イベント決定!
┣【ツール】Mavenではじめるプロジェクトドライブ[3]
┗【アンケート】週刊オブジェクト倶楽部にどんな記事を期待していますか?
 
〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇  オブジェクト倶楽部HPリニューアル!
  〇 〇━━━━━━━━━━━━━ ━━・ 

オブジェクト倶楽部のホームページが明日20日(木)に新しくなります。
http://www.ObjectClub.jp/
装いも新たに、より良いサイトを目指して日々精進!これからもみなさんのご
期待に沿えますよう、メンバー一同、いっそう頑張っていきます。ご感想、ご
意見等ありましたら、info@ObjectClub.jp まで。これからもよろしくお願い
します。

また、20日(木)に、オブジェクト倶楽部が運営する各種MLのドメイン変更も行
います。SPAMメールと間違えないよう、心(?)の準備をお願いします。この作
業に伴い、20日(木)8:00〜12:00まで、MLを停止します。下記アドレスと、その
関連アドレス(-ctl、-adminなど)に宛てたメールはエラーとなります。ご注意
ください。
magazine@ObjectClub.esm.co.jp
extremeprogramming-jp@ObjectClub.esm.co.jp
webservice-jp@ObjectClub.esm.co.jp
refactoring-jp@ObjectClub.esm.co.jp

変更後は下記のアドレスになります。(各関連アドレスも同様)
magazine@ObjectClub.jp
extremeprogramming-jp@ObjectClub.jp
webservice-jp@ObjectClub.jp
refactoring-jp@ObjectClub.jp

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇  オブジェクト倶楽部納涼イベント決定!
  〇 〇━━━━━━━━━━━━━ ━━・ 

前回好評だったオブジェクト倶楽部クリスマスセミナー。今度は夏に開催です。
オブジェクト指向業界での著名人の講演から、ワークショップ、そして今回は
ライトニングトークもあります。遊び心を織り交ぜた、前回に輪をかけて、楽
しく役に立つ「納涼祭」です。ライトニングトーク、ワークショップではお手
伝いくださる方を募集しています。詳細は、オブジェクト倶楽部HPリニューア
ルと共に、HPにて明日20日(木)からお知らせします。乞うご期待! 
 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【ツール】Mavenではじめるプロジェクトドライブ[3]

第3回 基本ゴールを実行してみる

■今回の内容

前回はMavenをインストールして、genappゴールを使用してプロジェクトを作
成しました。今回は作成したプロジェクトに対して実行できる最も基本的なゴ
ールであるビルド、テスト実行について解説します。なお、本文中の表記につ
いて簡単にまとめておきます。

┌─────┬───────────────┐
│   表記   │             意味             │
├─────┼───────────────┤
│foo.bar   │プロパティ foo.bar            │
├─────┼───────────────┤
│${src.dir}│プロパティの src.dir の値参照 │
├─────┼───────────────┤
│$HOME     │環境変数HOMEの値参照          │
└─────┴───────────────┘

■ java:compile

まず最初のゴールはソースのコンパイルです。project.xmlに設定してあるソ
ースディレクトリ配下のソースをコンパイルし、クラスファイルを指定のディ
レクトリに出力します。ソースディレクトリは、project.xmlの
<sourceDirectory> 要素に設定されているディレクトリとなります。クラスフ
ァイルの出力先は、標準では target/classes になっています。もし出力先を
変更したい場合は、project.properties内で maven.build.distを設定する必
要があります。 ^1

外部Jarとの依存関係は project.xml 内の <dependencies> 要素に依存するラ
イブラリを <dependency> 要素としてJarファイル分追加します。
<dependency>要素は子要素を含んでおり、最低でも3つの要素を指定する必要
があります。

なお、Mavenでは依存関係にあるJarファイルをリモートリポジトリ ^2 より取
得する仕組みになっており、<dependency>で追加したライブラリがローカルに
存在しなければ、リモートリポジトリへ探索にいきます。

リモートリポジトリには、オープンソースの有名どころのライブラリはほとん
ど揃っています。またリモートリポジトリは、自前で構築してそちらからJar
を取得するようにもできます。リモートリポジトリは maven.repo.remote で
カスタマイズ可能です。

<dependency>の設定

依存関係を指定するdependency要素の子要素について解説します。

dependencyの子要素:

 ・ groupId
    □ groupIdはJarのグループを指定します。具体的にはリモートリポジト
       リ直下のディレクトリ名になります。例えばJakartaの
       commons-collectionsを依存関係に含めたい場合には、
       <groupId>commons-collections</groupId> と指定します。
 ・ artifactId
     □ artifactId はバージョン番号を除いたJarファイルの名称を指定しま
        す。commons-collections の場合には、groupIdと同様に <artifactId>
        commons-collections</artifactId> と指定します。他のライブラリの
        場合には、groupに複数のJarファイルが含まれていることもあるので、
        その場合にはgroupId と異なる名前を指定することになります。具体
        的には、グループディレクトリ内のjarsディレクトリ配下にあるJar
        ファイルを指します。
 ・ version
     □ versionはライブラリのバージョンを指定します。依存関係に含める
        ライブラリは、特に指定しない限り、[artifactId]-[version].jar 
        という規則に従っている必要があります。 ^3

groupId、artifactId、versionを使用して、www.ibiblio.org にある
commons-collections-3.0.jar を依存関係に含めたい場合には、次のように記
述します。

[依存関係を追加する]:

<dependencies>
  <dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.0</version>
  </dependency>
</dependencies>

依存関係にリモートリポジトリに存在しない自前のJarファイルを含めたい場
合には、ちょっとした手間が必要です。無難なのは、リモートリポジトリを自
前で用意する方法です。ただしこの場合ですと、リポジトリサーバが必要にな
るなどの手間がかかります。プロジェクトを通してMavenを採用していくなら
まだしも、ちょっとMavenを使ってみたいだけの方にはややオーバースペック
です。本稿では代替案として「ローカルリポジトリへの登録」を紹介します。
 
ローカルリポジトリとは、「リモートリポジトリから取得したライブラリをキ
ャッシュしておくローカルのディレクトリ」のことです。Mavenのデフォルト
ローカルリポジトリは、 $HOME/.maven/repository となっています。既に
Mavenを実行している方はローカルリポジトリを覗いてみてください。ローカ
ルリポジトリはちょうど、リモートリポジトリと同じようなディレクトリ構成
になっています。

ここに自前のライブラリである「hoge-0.1.jar」を登録するために、次のよう
なディレクトリ構成にして配置します。以降は、hoge-0.1.jarを依存関係に追
加しても、ネットワークに取得しにいくこともなく、問題なく動作します。ロ
ーカルリポジトリの場所は maven.repo.local で変更可能です。

[ローカルリポジトリへのJar登録]:

$HOME/.maven/repository/
                      - hoge/
                        - jars/
                          - hoge-0.1.jar

■ test:compile

このゴールは project.xml に設定してあるユニットテストディレクトリ配下
のテストコードをコンパイルします。ユニットテストディレクトリは
project.xml の<unitTestSourceDirectory> で指定します。クラスファイルの
出力先はl java:compileとは異なり、 target/test-classes となっています。
出力先を変更したい場合は、project.properties に maven.test.dest を設定
します。

■ clean

このゴールはディレクトリ ${maven.build.dir} を削除します。クラスファイ
ルだけでなく、生成したドキュメントなども全て削除してしまいますので注意
してください。

■ test:test

このゴールは、test:compile で説明した、<unitTestSourceDirectory> 配下
のテストケースを実行します。その際、全テストケースを実行する点に注意し
てください。テスト実行後には、 target/test-reports 配下にテストレポー
トをXML、Text形式で出力します。この出力結果は後で説明するテストレポー
トのHTML出力に使用することになります。なお、test:testゴールは、testゴ
ールでも実行することができます。test:testゴールを実行すると、自動的に
test:compileを実行するため、明示的にtest:compileをしなくても構いません。

■ test:match

このゴールは -Dtestmatch=[パターン] で指定したパターンに合致するテスト
ケースのみを実行対象とします。パターンはAntのfilesetなどで使用するパタ
ーンを同様です。なお、デフォルトで全ディレクトリの全拡張子が対象になっ
ているため、指定するパターンはテストケース名のパターンだけで結構です。

test:match実行の例:

$ maven -Dtestmatch=*Factory* test:match
(全パッケージの〜Factory〜というテストケースを実行する)

■今回のまとめと次回予告

今回はビルド、テスト実行といったMavenの基本的なゴールについて解説しま
した。次回はMavenの機能の中でも、特に重要なサイトレポートについて解説
する予定です。(懸田)

[1] デフォルトのリモートリポジトリは http://www.ibiblio.org/maven/ です。

[2] targetディレクトリは maven.build.dir でカスタマイズ可能です。

[3] [名称]-[バージョン].jar という形式でなくとも指定することは可能です
    が、一般的ではないためここでは説明しません。 
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?B003+2+0
普通:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?B003+2+1
イマイチ:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?B003+2+2
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【アンケート】週刊オブジェクト倶楽部にどんな記事を期待していますか?

「皆さんは、週刊オブジェクト倶楽部にどんな記事を期待していますか?」
サイトのオブジェクト倶楽部とは違ったものを期待している方もおられるの
でしょうか?メルマガの内容向上のため、ご協力お願いします。

  オブジェクト指向技術の「新しい動向」を伝えてくれる記事。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z002+0+0
  オブジェクト指向技術の「理論」を教えてくれる記事。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z002+0+1
  オブジェクト指向技術の「現場への適用法」を教えてくれる記事。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z002+0+2
  オブジェクト指向関連の「体験談」をレポートする記事。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z002+0+3
  オブジェクト指向技術の「チュートリアル」。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z002+0+4
  オブジェクト指向「技術者」に関する記事。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z002+0+5
  「オブジェクト倶楽部」に関する記事。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z002+0+6
  ちょっと語らせて!
     editors@ObjectClub.jp まで詳細を!!

アンケート結果はオブジェクト倶楽部HP上にて公開します。お楽しみに。
なお、今週の「気になるシステム業界 ホントのところ」はお休みです。
前号「プログラマはコミュニケーションが得意?不得意?」の結果は公開中。
是非ご覧下さい。
⇒http://objectclub.esm.co.jp/ml-arch/magazine/question/index.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人です。皆さん、最近凝っているものってありますか?私は
ここのところ、部屋の掃除ばかりしています。仕事環境を改善するためでもな
く、インテリアに凝りだしたわけでもなく、どうも忙しくなってきたからのよ
うです。
昔、受験期の頃、テスト前になると部屋の掃除をし始めたりしませんでした?
読者の皆様は集中力のある方が多くてあまりそういうこともないのかもしれま
せんが、私は時間がなくて追い詰められていくたび、夜中の三時くらいにフロ
ーリングの雑巾がけなどをやっている自分を発見して怖いです。

今週の強引な一言
*** 木を見て森を見ず(ことわざ)***
ソフトウェア開発には様々な作業があるので、部分最適しても全体効率はほと
んど変りません。全体的に少しずつまんべんなく改善するほうがよいでしょう。 
(さわ)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒http://objectclub.esm.co.jp/mlmagazine_help.html
〇 免責事項、過去の記事は   ⇒http://objectclub.esm.co.jp/mlmagazine.html
■ 発行:オブジェクト倶楽部 ⇒http://www.ObjectClub.jp/
■ 編集代表:平鍋  健児
Copyright (c)2003-2004 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.