Ant新手 - 相对路径问题

8
请帮忙,我即将疯掉!!
我正在使用Eclipse生成的ant文件构建具有依赖关系的项目,其中一个依赖项在与我正在构建的项目的直接祖先相邻的目录中有自己的构建文件。例如,如果我的目录是“/base/modules/clinicalcontext”,则其中一个依赖项的目录仅为“/base/core”。
因此,生成的build.xml使用../../core,据我所知这是正确的。但它实际上不正确!从控制台可以看出,Ant返回了三个级别而不仅仅是两个级别(对“/core/build.xml”显示了FileNotFound)。
我试图将相对路径更改为“../core”,但令人惊讶的是,这样Ant只返回了一个级别(它抱怨不存在“/base/modules/core”)。那么我怎样才能让Ant返回两个级别呢?我更喜欢避免使用绝对路径,因为有一天我可能需要将项目移动到另一台计算机。
谢谢大家。
1个回答

10

所有Ant路径都将相对于您当前的工作目录。

因此,请检查您从哪个目录运行脚本。

我建议您开始使用${basedir},以获取相对于build.xml位置的路径。

在您的情况下,应该像这样构造相对路径:${basedir}/../../core,而不是../../core

您遇到的不一致性说明了一个问题,即Eclipse生成的ant脚本是一个很好的起点,但绝不能成为一个好的项目构建系统。

编辑。我想知道为什么Eclipse的ant生成器在相对路径中没有插入${basedir}?也许您应该将其报告为错误。


${basedir} 正确设置为 .,这也是我正在使用的构建文件的位置。 - Alessandro
3
是的,但是这样的路径(../../core)不是相对于基目录的。 ../../core 取决于您的当前工作目录(CWD),${basedir}/../../core 却不是。 - Alexander Pogrebnyak
1
搞定了,谢谢!我没有考虑到依赖项的构建文件不会改变当前工作目录。 - Alessandro
我正在从另一个ant任务调用一个ant任务,但是basedir似乎是相对于启动构建的build文件而不是实际执行的文件。 - Manticore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接