从xml读取的绝对路径的ant副本

时间:2011-12-19 10:31:32

标签: ant

我的问题是,我必须从xml文件中读取复制作业的源路径,然后将该dir中读取的所有文件从xml文件复制到另一个目录。

由于代码不仅仅是单词:

<xmltask source="${projectfile}">
  <copy path="Project/RecentResultsInfo/ResultsDirectoryOfRecentLoadTest/text()" property="recentdir" attrValue="true"/>
</xmltask>
<copy todir="${targetdirectory}">
  <fileset dir="${recentdir}"/>
</copy>

运行此目标时的输出是: C:\ develop \ build.xml:44:警告:找不到要复制的资源文件“C:\ develop \ C:\ Program \ tool \ test_90 \”。

似乎在文件集中它无法识别,recentdir内部存在完整路径。应用程序中写入的xml在xml文件中使用路径读取的路径之前和之后都有一个换行符。所以蚂蚁不会认识到这条道路,因为它前面有一条换行符。

蚂蚁有什么修饰吗?

有人能帮助我让蚂蚁接受这条道路吗?

2 个答案:

答案 0 :(得分:1)

现在使用Ant-Contrib完成它,但无论如何都在这个项目中使用。

<xmltask source="${projectfile}">
  <copy path="Project/RecentResultsInfo/ResultsDirectoryOfRecentLoadTest/text()" property="recentdirraw" attrValue="true"/>
</xmltask>
<!-- replace newlines and whitespace from read path -->
<propertyregex property="recentdir" input="${recentdirraw}" regexp="^[ \t\n]+|[ \t\n]+$" replace="" casesensitive="false" />
<copy todir="${targetdirectory}">
  <fileset dir="${recentdir}"/>
</copy>

只需使用正则表达式修改属性,通过条带化空格和换行符修剪文本。

答案 1 :(得分:1)

据我所见,xmltask中的copy元素提供了trim属性。

trims leading/trailing spaces when writing to properties

这有用吗?