关于<import>
任务的Ant文档会提供如何实现这一点的信息。
解析导入文件中的文件
假设您的主构建文件名为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>
然而,这个代码片段将会根据导入xml文件的basedir
解析imported.properties文件,因为Ant忽略了导入xml文件的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]}
文件属性中出现,用于
<dirname />
。