让我首先提供我面临的问题的背景。
我的目录结构如下。
c:\myDirectory
c:\myDirectory\Project1
c:\myDirectory\Scripts
在c:\myDirectory\Scripts下有一个脚本,用于下载源代码(从 svn)并创建c:\myDirectory\Project1目录。
我有另一个 ant 脚本 ( c:\myDirectory\Scripts**compile-source.xml ) 从下载到c:\myDirectory\Project1 的 ant 脚本 build.xml 编译 Project1
c:\myDirectory\Scripts\compile-source.xml 的片段
<project name="compile" default="buildAll" basedir=".">
<property file=".\build.properties">
</property>
.......
<import file="${project.home.path}/${project.name}/build.xml"/>
<target name="buildAll">
<antcall target="jar-pack"/>
</target>
</project>
c:\myDirectory\Project1\build.xml 的片段。
<project name="CommonFeatures" default="jar-pack" basedir=".">
<description>
A build file for the Common Features project
</description>
....
</project>
请注意,项目的 basedir 设置为“。” 对于上述两个蚂蚁脚本。
当我从c:\myDirectory\Scripts目录执行脚本c:\myDirectory\Scripts\compile-source.xml时, c:\myDirectory\Project1\build.xml中的目标“jar-pack”会被执行。
但是,问题在于 build.xml ( basedir="." ) 中的 basedir 属性是当前工作目录,在本例中是其c:\myDirectory\Scripts。因此脚本 build.xml 出错,因为 build.xml 的 basedir 应该是c:\myDirectory\Project1。如果 basedir=".",build.xml 脚本会起作用。被设置为"c:\myDirectory\Project1",但不幸的是 build.xml 文件来自下载的源代码,我无法编辑。
所以这是我的问题,是否可以执行以下任何操作。
覆盖属性 basedir="." 的值 在 build.xml 时在 c:\myDirectory\Scripts\compile-source.xml 中完成?
是否可以通过任何其他机制更改 build.xml 中的 basedir,以便在目录 c:\myDirectory\Project1 下执行脚本 c:\myDirectory\Project1\build.xml ?
还有其他方法可以解决这个问题吗?
非常感谢 Ant 专家为解决此问题提供的任何帮助。