任务的ant 文档为<import>
您提供了有关如何完成此任务的信息。
根据导入的文件解析文件
假设您的名为 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>
basedir
然而,这个片段将根据 importing.xml解析imported.properties ,因为basedir
Ant 忽略了imported.xml。使用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 />
.