ANT Build:可以从属性文件中的其他值解析令牌本身吗?
是否可以从属性文件中的其他值解析令牌本身 是否可以在不硬编码令牌的情况下评估令牌密钥?是否可以从属性文件中的其他值解析令牌本身 例如,如果属性文件具有以下标记(test.properties): build.xml的内容ANT Build:可以从属性文件中的其他值解析令牌本身吗?,ant,replace,build,token,Ant,Replace,Build,Token,是否可以从属性文件中的其他值解析令牌本身 是否可以在不硬编码令牌的情况下评估令牌密钥?是否可以从属性文件中的其他值解析令牌本身 例如,如果属性文件具有以下标记(test.properties): build.xml的内容 <?xml version="1.0" encoding="utf-8"?> <project default="repl"> <property file="test.properties" /> <target na
<?xml version="1.0" encoding="utf-8"?>
<project default="repl">
<property file="test.properties" />
<target name="repl">
<replace file="test.txt" token="module_title" value="title_${module_no}_${module_code}" />
</target>
</project>
替换任务将导致:
Welcome to title_01_bb.
如何做到这一点呢
Welcome to JKL.
这可能是非常基本的,但请务必指导我正确的方向。谢谢。嵌套属性扩展在Ant中默认不起作用,如中所述: 大括号嵌套 在其默认配置中,Ant不会尝试在属性扩展中平衡大括号,在创建属性名称时,它只使用第一个右大括号之前的文本。也就是说,当扩展类似于
${a${b}}
的内容时,它将被转换为两部分:
a${b
的扩展可能没有什么用处}
<property file="test.properties" />
<target name="repl">
<gettitleprop name="titleprop" moduleno="${module_no}" modulecode="${module_code}" />
<replace file="test.txt" token="module_title" value="${titleprop}" />
</target>
<macrodef name="gettitleprop">
<attribute name="name"/>
<attribute name="moduleno"/>
<attribute name="modulecode"/>
<sequential>
<property name="@{name}" value="${title_@{moduleno}_@{modulecode}}"/>
</sequential>
</macrodef>
您可能想看一看如何显示一些解决方案,从${title\u${module\u no}}{u${module\u code}}}
的角度来看,“双重扩展属性”。感谢@manouti的详细解释。这对我很管用。我的原始构建有更多的链接任务,因此最初您的解决方案作为独立任务工作,但在我的构建中失败。我只需在构建序列的更早阶段生成属性(示例中为gettitleprop),一切正常。这为我节省了很多精力:)
Welcome to JKL.
<property file="test.properties" />
<target name="repl">
<gettitleprop name="titleprop" moduleno="${module_no}" modulecode="${module_code}" />
<replace file="test.txt" token="module_title" value="${titleprop}" />
</target>
<macrodef name="gettitleprop">
<attribute name="name"/>
<attribute name="moduleno"/>
<attribute name="modulecode"/>
<sequential>
<property name="@{name}" value="${title_@{moduleno}_@{modulecode}}"/>
</sequential>
</macrodef>