私はAnt 1.10を使用しています。ファイルが存在する場合は、現在の場所からディレクトリ構造の上にファイルのパスを見つける必要があります。私たちは既にビルド環境でant-contrib
を使用していますので、それを使用した勧告に問題はありません。利用可能なファイルを使用してAntからファイルのパスを取得
例えば、私は、次のディレクトリ構造を持っている:
~/repos/proj/
--/build.root
--/common/math/
--/build.xml
--/ivy.xml
--/build/tools/
--/build-shared.xml
--/ivy-stuff.xml
--/products/
--/prodA/
--/build.xml
--/ivy.xml
私が取得する必要があるパス(私は、このプロパティbuildrootdir
を呼び出す)、絶対パスとして~/repos/proj
です。次に、buildrootdir
とbuild-shared.xml
のパスから構築されたプロパティを作成します。現在、ルートへのパスは、一連の相対パス(../../../
)としてハードコードされています。私たちはまもなくコードの再編成を行うつもりです。ハードコードされた相対パスを「動的な」ルックアップで取り除きたいと思います。
私の現在の解決策は、再帰的なantcallback
をプロパティを設定するfindroot.xml内のターゲットに使用することです。私は、ルートレベルに達するまで、親ディレクトリを通して検索を制限するロジックを用意しています。それはうまくいきますが、それはwazooのコード複製を引き起こします。すべてのbuild.xmlには、近くのfindroot.xmlがあります。そうでなければ、共通のfindroot.xmlファイルへのハードコーディングされた相対パスがあり、私の目的を逸してしまいます。私はこのような何かたくないん:
~/repos/proj/
--/build.root
--/common/math/
--/build.xml
--/ivy.xml
--/findroot.xml
--/build/tools/
--/build-shared.xml
--/ivy-stuff.xml
--/findroot.xml
--/products/
--/prodA/
--/build.xml
--/ivy.xml
--/findroot.xml
を私はavailable
タスクを見て、私は真の「searchparents」フラグを設定することができ、それが再帰的に上方向に検索しますことに気づきました。私は使用することができます
これは、ファイルが利用可能であると言うように動作します。しかし、私はそれを利用可能にする方法を知りません。私はavailable doxygenもavailable source code見てきましたし、可能であるようには見えない
[available] Searching /home/user/repos/proj/common/math
[available] Found: build.root in /home/user/repos/proj
:私は、私は次の行を参照して、デバッグ出力を見てください。
何か不足していますか? available
に代わるものがありますが、それは私にこの望ましい動作をさせるでしょうか?
私はあなたが提案した3番目のオプション( 'fileset' one)を手に入れたいと思っています。書かれているように、私は '/ proj/common/math /'フォルダから 'ant build 'を実行するので、ファイルセットはそれを検索のルートとして使用し、build.rootファイルを見つけるために下に行く(常に失敗する) 。私はそれを別の方法(親ディレクトリの方へ)にする必要があります。 開発者のマシンまたは継続的なインテグレーションマシンのビルド構造の場所が変更されるため、柔軟性が必要です。任意のヒント? –
その場合、ファイルセットの 'dir'属性を' $ {basedir} /../ .. 'のような相対パスに設定するだけです。 "project.root.dir"のような名前のプロパティを 'location =" $ {basedir} /../.. "でスクリプトを初期化する(つまり、このタスクをターゲット外に置く)その場所を指す必要があるときはいつでも使用できます。 – CAustin