Antは、Jakartaプロジェクトから提供されているビルドツールです。C言語のmakeのJava版に相当します。Antを使ってビルドするためには、ビルド時のルールをbuild.xmlというXML形式のファイルで記述します。SOBAのソースはほとんどJavaで書かれているために、build.xmlというファイルが各コンポーネントごとに存在します。
SOBA社内で扱うSOBAのソースには、汎用的なコア部分と、あるお客様用などのアプリケーションごとに固有な部分が存在します。こういった構造のために、build.xmlでif分に相当する制御構造を記述したいと思うことがよくあるのですが、残念ながらそういった機能はないようです。制御構造っぽい記述が可能なantタスクとして、conditionやavailableというのがありますが、もう少し汎用的にif文を記述可能な制御構造をサポートしたantタスクは存在しないのでしょうか?
コメント (5)
targetのif (またはunless)属性ではだめなのでしょうか?
[参照]
http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/index.html
投稿者: tama | 2007年08月13日 21:53
日時: 2007年08月13日 21:53
ant-contribでモロif-elseが使えるようです。
投稿者: だいちゃん | 2007年08月15日 18:08
日時: 2007年08月15日 18:08
確かにやりたいことはおよそ以下のことです。
http://ant-contrib.sourceforge.net/tasks/tasks/if.html
targetのifの場合は、trueかまたはfalseのpropertyを使うことになると思いますが、この場合の問題は、
1.trueかfalseの値がセットされたpropertyによる場合わけしか対応できない。
2. trueかfalseの2通りしか評価できない。3通り以上の場合わけを評価するには、さらにpropertyを追加してnestするしか方法がないのでしょうね。
しかし、追加でant-contribのjarを追加するのではなくて本家が対応してくれると一番ありがたいんですけど、世界中の人はなんとかしているんでしょうね。
投稿者: urashita | 2007年08月15日 21:39
日時: 2007年08月15日 21:39
そもそも、antを実行した結果=targetが異なる場合に分岐を使用するという発想が間違いだと思います。(それはmakeでも同じ)
なのでtargetのif (またはunless)属性で十分だと思います。
#このように思っていましたが、これでは質問の回答にならないので、、、
投稿者: tama | 2007年08月18日 00:28
日時: 2007年08月18日 00:28
なるほど
投稿者: urashita | 2007年08月22日 21:05
日時: 2007年08月22日 21:05