タスクのantドキュメントには、<import>
これを実現する方法に関する情報が記載されています。
インポートされたファイルに対するファイルの解決
importing.xmlというメインのビルドファイルが、ファイルシステム上の任意の場所にあるビルドファイルimported.xmlをインポートし、imported.xmlがimported.propertiesから一連のプロパティを読み取るとします。
<!-- importing.xml -->
<project name="importing" basedir="." default="...">
<import file="${path_to_imported}/imported.xml"/>
</project>
<!-- imported.xml -->
<project name="imported" basedir="." default="...">
<property file="imported.properties"/>
</project>
ただし、このスニペットは、imported.xmlのofがAntによって無視されるbasedir
ため、importing.xmlのofに対してimported.propertiesを解決します。basedir
imported.propertiesを使用する正しい方法は次のとおりです。
<!-- imported.xml -->
<project name="imported" basedir="." default="...">
<dirname property="imported.basedir" file="${ant.file.imported}"/>
<property file="${imported.basedir}/imported.properties"/>
</project>
上で説明したよう${ant.file.imported}
に、importedというプロジェクトを定義するビルドスクリプトのパスを格納し(つまり、imported.xmlへのパスを格納します)、<dirname>
そのディレクトリを取得します。この手法により、imported.xmlをスタンドアロンファイルとして使用することもできます(他のプロジェクトにインポートする必要はありません)。
${basedir}
基本的に、プロジェクトタグで変数や属性を実際に使用することはできませんbasedir="./../GrahamsProjClient"
が、代わりに次のように作成できます。
<!-- build-client.xml -->
<project name="GPClient" default="dist" >
<dirname property="client.root.dir" file="${ant.file.GPClient}"/>
<property name="real.basedir" value="${client.root.dir}/../GrahamsProjClient"/>
<!-- Then from then on, replace ${basedir} with ${real.basedir} -->
...
</project>
build-server.xmlについても同じことができます。注意すべきことは、プロジェクト名がの${ant.file.[project name]}
file属性に含まれていることだけです<dirname />
。