<import> 任务的ant documentation 为您提供有关如何完成此任务的信息。
根据导入的文件解析文件
假设名为 importing.xml 的主构建文件导入了一个构建文件 imports.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>
然而,这个 sn-p 将根据 importing.xml 的basedir 解析imported.properties,因为Ant 忽略了importing.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} 存储构建脚本的路径,该脚本定义了名为导入的项目(简而言之,它存储了导入的.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 /> 提供。