2009-11-04 18 views
8

ビルドサーバー上のさまざまなプロジェクト固有のビルドスクリプトから呼び出されるユーティリティビルドスクリプトがあります。相対ディレクトリ構造が変わるまで、すべてうまく動作します。 antファイル内からantスクリプトの場所を参照する

trunk/ 
    utilities/ 
     imported.xml 
     some_resource_file 
    projectName/ 
     importing.xml 

がうまく動作しますが、時には我々は、必要があります:それはある

trunk/ 
    importing.xml 
    utilities/ 
     imported.xml 
     some_resource_file 
    projectName/ 

問題がimported.xmlニーズsome_resource_file、現在は../utilities/some_resource_fileを参照することにより、それに到達するということです。これは作業ディレクトリがutilitiesの兄弟であるため、最初のケースでは明らかに機能します。

imported.xmlには、それがどのディレクトリにあるかを簡単に知る方法がありますか?bashのdirname $0に相当するものはありますか?または、私は何とかインポートスクリプトからこれを挿入する必要がありますか?インポートされたファイルに対する解決ファイルの下

http://ant.apache.org/manual/Tasks/import.html

チェック:

答えて

19

imported.xmlにname属性のプロジェクトが定義されていることを確認してください。その後、その名前をant.file.nameプロパティを介してantファイルへの絶対パスに使用できます。

私はIMPORTEDを大文字にしました。コード内で簡単に確認できます。

<project 
    name="IMPORTED" 
> 
    <dirname 
    property="IMPORTED.basedir" 
    file="${ant.file.IMPORTED}" 
    /> 
    <property name="myresource" 
    location="${IMPORTED.basedir}/some_resource_file" 
    /> 
</project> 
+0

素晴らしいです。私はマニュアルの答えを見つけましたが、ここでリンクをコピーしました。たぶんこれは、antマニュアルをナビゲートするのが簡単ではない人を助けるでしょう。 –

4

は答えを見つけました。

関連する問題