Index: [Article Count Order] [Thread]

Date:  Wed, 4 Apr 2001 11:47:57 +0900
From:  "Masaru Ishii" <mishii@....jp>
Subject:  [XP-jp:01798] Re: Ant の利用方法をまとめました.
To:  <extremeprogramming-jp@....jp>
Message-Id:  <ILEBJJEBEEGOFEECJMPKGENFCOAA.mishii@....jp>
In-Reply-To:  <87y9tie2jv.fsf@....com>
X-Mail-Count: 01798

懸田さん,こんにちは.石井です.

> > あと,DTDを作成するのにかなり手間取りました.
> こちらは御覧になりました?
> http://www.sdv.fr/pages/casa/arc/ant-dtd.zip

これはバージョンが古いようです.で,どうやって作るんだろうと調べていたら,
<antstructure> タグを使って Ant 自身にDTDを吐かせるのが正解みたいです.

参考のために project.dtd 作成方法を書いておきます.

-- project-dtd.xml ここから --
<?xml version="1.0"?>
<project name="project-dtd" default="project.dtd" basedir=".">
  <target name="project.dtd">
    <antstructure output="project.dtd"/>
  </target>
</project>
-- project-dtd.xml ここまで --

c:\> ant -buildfile project-dtd.xml

これで,現在 Ant が参照しているクラスパスすべてについての Task クラス
が含まれている DTD を動的に作成します.

問題は, jakarta-ant-1.3-optional.jar をクラスパスに含めてしまうと,そこに
書いてある Optional Task クラスすべてのライブラリを用意しないとDTDを
作成するときランタイムエラーになってしまう,というところです.使う必要の
ない Task クラスのために,全部ライブラリをダウンロードする,なんて面倒な
ことはできませんでした.

そこで jakarta-ant-1.3-optional.jar の中で必要なのは,とりあえず JUnit 関係
とVSS 関係だけだったので,このファイルから不必要な クラスをみんな削除して
からDTDを作成しました.これでやっとDTDが作成できました^^;.

普段 XML は Emacs の PSGML モードを使って書いています(このモード
は,DTDを用意しないと使えない).でも,少し使いにくいのが,生成された
DTD に従うbuild.xml を書いても,まだ Ant が文法エラーと文句いうことが
あるのです.

というのも,Ant の文法はDTDの文法で書ききれない制限があって例えば
<javac> エレメントは, srcdir アトリビュートが required なのですが,子エレメ
ント
に <src> があれば,required でなくてもかまわない,というDTDでは表せない
ものになっています.だから,ちゃんと Ant のリファレンスを見てbuild.xml を
書かないといけません.ここは build.xml を書いてて不便でした.

…って苦労話ばっかり書いてますが,Ant は便利なのでこれからはずっと
Ant を使うつもりです.make と併用ですが.

> 1. 必要な設定値をPropertyファイル(name=valueの書式)で外部に出す
> 2. AntとMakefileからPropertyファイルをincludeする
> 3. 全体ビルド、JavaDoc作成、テストはAntで行い、パッケージ階層は
>    Makefileにデフォルトルールだけ書いておく

あ,これは僕が考えていたのと同じですね.Property ファイルでは
make で使える マクロの演算,例えば

CLASSPATH = $(CLASSPATH);$(JUNIT_CLASSPATH)

みたいなことができないですが,情報を2重もちするよりはいいと思います.

> 今、お客さんからもう一つ追い討ちがありました。
> 「antにmake -nみたいなのないの?」
> あるのかなぁ.....

これは,僕も欲しかった機能です.探したのですが,なさそうでした.

> ThoughtWorksのCruiseControlがちゃんと使えるともっと良いのですが。
> (まだあまり見ていない...)
> http://cruisecontrol.sourceforge.net/index.html

これは,Ant の欠点を補完してくれるものなのかな?
また時間があれば見てみます.
では.