大家好,请看一下这段代码
在我的属性文件中 双赢x86.pc-共享位置= E:\ Ant_Scripts
现在,我正在尝试从build.xml中调用PrintInstallerName_build
,而PrintInstallerName_build
位于test.xml中。在build.xml文件中,调用目标中的${platform.id} has value=win-x86
和调用目标param1中的 <target name="PrintInstallerName" >
<echo>PlatForm.Id====>${platform.id}</echo>
<ant antfile="test.xml" target="PrintInstallerName_build">
<property name="param1" value="${platform.id}"/>
</ant>
<target name="PrintInstallerName_build" >
<echo>${param1.pc-shared-location}</echo><!--${param1.pc-shared-location}-->
<echo>${param1}.pc-shared-location}</echo><!--win-x86.pc-shared-location-->
<echo>${win-x86.pc-shared-location}</echo><!--E:\\Ant_Scripts-->
</target>
也具有值= win-x86
E:\\Ant_Scripts
你可以看到只有最后一个语句提供了正确的输出,但它是硬编码的,我想使用param1,输出应该是{{1}}我试图使用$和@但是没有效果,可能是我在做在某个地方有人可以帮忙取悦,我很震惊,明天是它的DOD。
答案 0 :(得分:4)
请参阅Ant手册的Properties页面中的大括号嵌套。
在默认配置中,Ant不会尝试平衡大括号 属性扩展,它只会消耗文本到第一个 创建属性名称时关闭大括号。即扩张时 像$ {a $ {b}}这样的东西将被翻译成两部分:
the expansion of property a${b - likely nothing useful. the literal text } resulting from the second closing brace
这意味着您无法轻松使用名称为的扩展属性 由属性给出,但旧版本有一些解决方法 蚂蚁使用Ant 1.8.0和道具Antlib,您可以配置Ant 如果你需要这样的话,可以使用那里定义的NestedPropertyExpander 特征
答案 1 :(得分:1)
<target name="PrintInstallerName_process" >
<echo>${param1}</echo><!--win-x86-->
<macrodef name="testing">
<attribute name="v" default="NOT SET"/>
<element name="some-tasks" optional="yes"/>
<sequential>
<echo>Source Dir of ${param1}: ${@{v}}</echo><!-- Dir of Win-x86:E:\Ant_Scripts-->
<some-tasks/>
</sequential>
</macrodef>
<testing v="${param1}.pc-shared-location">
<some-tasks>
</some-tasks>
</testing>
</target>
这是它的工作方式,对我来说它无论如何都很好@sudocode
你的小费把我带到那里非常感谢你
答案 2 :(得分:1)
您可以使用 var sortIt = myDateTime.sort(function(a, b) {
var dateA = new Date( a.date );
var dateB = new Date( b.date );
return dateA < dateB ? -1 :( dateA > dateB ? 1 : 0);
});
来实现目标
请考虑您需要具有<propertycopy>
使用${propA${propB}}
的ant标记如下:
propertycopy
这将回显<propertycopy property="myproperty" from="PropA.${PropB}"/>
<echo >${myproperty}</echo>