Ant中如何获取文件集中某个文件的绝对路径?

4

我正在使用Jenkins和Email-Ext插件来自动化PHP单元测试。如果测试失败,我想发送一封通知邮件给自己,包括压缩的测试报告。

Email-Ext插件需要在附件字段中定义一个Ant Fileset。 压缩的测试报告可以在这里找到:

D:\Test_Reports\test-report-failed.zip

我找不到一个使用绝对路径指向单个文件的fileset的可用示例。
我尝试了以下代码,但并没有起作用: <fileset file="D:\Test_Reports\test-report-failed.zip" /> 只能找到使用相对路径而非绝对路径的示例。
这是Email-ext插件关于附件字段的官方帮助文档:
“这是将用于电子邮件的附件集合。格式为逗号分隔的Ant包含文件语法列表。基本目录是工作区。”

然后相对于工作区引用它们,而不是使用绝对路径。 - niculare
1
工作区可能不同,并位于另一个驱动器中。我必须以某种方式使用绝对路径。 - papaiatis
3个回答

3
您可以使用<include/>标签来实现此操作。它看起来像这样。
<fileset dir="D:\Test_Reports">
    <include name="test-report-failed.zip" />
</fileset>

如果您想在属性中获取文件路径,可以按照以下方式进行(我已经测试过,它是有效的):
<path id="absolute.path.id">
    <fileset dir="D:\Test_Reports">
        <include name="test-report-failed.zip" />
    </fileset>
</path>
<property name="absolute.path" value="${toString:absolute.path.id}" />
<echo>file absolute path: ${absolute.path}</echo>

我认为我应该只指定包含语法。但我猜在包含语句中使用绝对路径是不可能的。 - papaiatis
我已经编辑了我的答案。您可以使用<path/>任务获取绝对路径。 - pepuch

0

只需在附件字段中指定文件的绝对路径(而不是XML元素)。


-2
我通过将Jenkins Job的工作空间更改为测试报告和其他资源所在的目录来解决了这个问题。然后,我使用相对地址来访问zip文件,例如:test-report-failed.zip

2
这对其他人没有帮助。 - ldgorman

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