懸田さん,こんにちは.石井です.
> > あと,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 の欠点を補完してくれるものなのかな?
また時間があれば見てみます.
では.