首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MacroDef、属性和and任务

MacroDef、属性和and任务
EN

Stack Overflow用户
提问于 2013-01-08 02:44:28
回答 1查看 574关注 0票数 1
代码语言:javascript
复制
 <target name="openAssetXMLFile">
   <for list="${LogOfCurrentAssetChanges}" delimiter="${line.separator}" param="paths">
     <sequential>
       <xmltask source="${basedir}@{paths}">
         <copy path="/x/id/text()" attrValue="true" property="type"/>
         <copy path="/x/attribute[9]/data/stringValue/text()" attrValue="true" property="uid"/> 
       </xmltask>
       <echo> ${type}</echo>
       <echo> ${basedir}@{paths}</echo>
       <echo> ${uid}</echo>
     </sequential>
   </for>       
 </target>

我在这里相当无助,希望得到任何帮助。所以我有上面的构建文件片段,它使用顺序,它使用宏定义,所以字符串应该用@符号来引用,而不是通常的$符号。

我有一个logofcurrentassetchanges文件,其中包含对一些xml文件的相对引用。现在,我需要将其与当前目录连接起来,以生成绝对引用名称。当我回显连接的字符串时,它非常完美-我的意思是,对于每个for循环迭代,它都会按照预期打印一个不同的xml字符串。但是,当我在上面所示的xmltask中使用它时,它对所有迭代都使用第一个源吗?我是否需要刷新/清理或做些什么来清除xmltask源属性的原始旧值?或者我能做些什么来解决这个问题。echo语句的示例输出:

代码语言:javascript
复制
 [echo]  CSElement:1242615155986
 [echo]  /y/z/t/u/11/67/MFootsfgsgfser(e7e105ef-660f-4363-8018-638f87ba06be).main.xml
 [echo]  7d454a57-fe1a-48c1-994c-bbcbbf9f78e4
 [echo]  CSElement:1242615155986
 [echo]  /a/b/c/MORegistsfgsfgfsgerLogsfgshinLinsgsfgks.jsp.main.xml
 [echo]  7d454a57-fe1a-48c1-994c-bbcbbf9f78e4

在这里,type和uid一直重复,但是打印出来的路径看起来是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-08 05:54:28

(至少部分)问题是Ant副本分配给xmltask属性(名为typeuid)。Ant属性-与ant-contrib @变量不同,ant属性通常是不可变的,所以一旦为它们设置了值,它们就不会改变。这就是你所看到的。

从Ant1.8版本开始,有一个名为local的任务,可用于将属性的范围限定为当前的“块”,以便您可以在每次for迭代中具有不同的值。它看起来像这样:

代码语言:javascript
复制
<sequential>
   <local name="type" />
   <local name="uid" />
   <xmltask source="${basedir}@{paths}">
   ... etc.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14202080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档