« セミ | メイン | 大文字焼き »

Ant

Antは、Jakartaプロジェクトから提供されているビルドツールです。C言語のmakeのJava版に相当します。Antを使ってビルドするためには、ビルド時のルールをbuild.xmlというXML形式のファイルで記述します。SOBAのソースはほとんどJavaで書かれているために、build.xmlというファイルが各コンポーネントごとに存在します。
SOBA社内で扱うSOBAのソースには、汎用的なコア部分と、あるお客様用などのアプリケーションごとに固有な部分が存在します。こういった構造のために、build.xmlでif分に相当する制御構造を記述したいと思うことがよくあるのですが、残念ながらそういった機能はないようです。制御構造っぽい記述が可能なantタスクとして、conditionやavailableというのがありますが、もう少し汎用的にif文を記述可能な制御構造をサポートしたantタスクは存在しないのでしょうか?

トラックバック

このエントリーのトラックバックURL:
http://soba-project.info/cgi/mt/mt-tb.cgi/76

コメント (5)

tama:

targetのif (またはunless)属性ではだめなのでしょうか?
[参照]
http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/index.html

ant-contribでモロif-elseが使えるようです。

確かにやりたいことはおよそ以下のことです。
http://ant-contrib.sourceforge.net/tasks/tasks/if.html


<if>
<equals arg1="${foo}" arg2="bar" />
<then>
<echo message="The value of property foo is bar" />
</then>
<else>
<echo message="The value of property foo is not bar" />
</else>
</if>

targetのifの場合は、trueかまたはfalseのpropertyを使うことになると思いますが、この場合の問題は、

1.trueかfalseの値がセットされたpropertyによる場合わけしか対応できない。

2. trueかfalseの2通りしか評価できない。3通り以上の場合わけを評価するには、さらにpropertyを追加してnestするしか方法がないのでしょうね。

しかし、追加でant-contribのjarを追加するのではなくて本家が対応してくれると一番ありがたいんですけど、世界中の人はなんとかしているんでしょうね。

tama:

そもそも、antを実行した結果=targetが異なる場合に分岐を使用するという発想が間違いだと思います。(それはmakeでも同じ)
なのでtargetのif (またはunless)属性で十分だと思います。
#このように思っていましたが、これでは質問の回答にならないので、、、

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年08月13日 19:50に投稿されたエントリーのページです。

ひとつ前の投稿は「セミ」です。

次の投稿は「大文字焼き」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type