我的属性文件中有数千个属性,我想只更改一个属性,如下所示。
<propertyfile file="${mypropetyfile}">
<entry key="jndiname" value="java:comp/env/wm/default"/>
</propertyfile>
但是在属性文件中,我获得了额外\
的属性值:
jndiname=java\:comp/env/wm/default
我尝试了<echo>
任务但删除了其他属性。在这种情况下我也尝试过串联,如下所示我也得到额外的\
<propertyfile file="${mypropetyfile}">
<entry key="jndiname" default="" operation="+" value="java:comp/env/wm/default"/>
</propertyfile>
答案 0 :(得分:5)
\
之前的:
是转义字符。虽然这里没有必要,因为:
不是键的一部分,但是它是值的一部分,它也不会受到伤害。使用Properties.load()加载此属性文件将取消:
。你不应该关心逃跑。
答案 1 :(得分:4)
刚刚遇到同样的问题,更改了Websphere 6.1&amp ;;读取的属性文件。最终不得不做这个解决方法:
<property name="jndi.example" value="java:comp/env/example" />
<propertyfile file="jdbc.properties">
<entry key="datasource.example.jndi" operation="=" value="@EXAMPLE"/>
</propertyfile>
<!-- set tokens to property values because ant wants to 'escape the colon' -->
<replace file="jdbc.properties" token="@EXAMPLE" value="${jndi.example}" />
答案 2 :(得分:3)
“最佳答案”并未真正解决问题。 Properties.load()不是这种情况下的答案(极有可能),你不会控制将使用属性文件的“另一面”。
似乎您无法将<propertyfile/>
设置为不执行此操作。对我来说似乎是一个错误。
<replace>
建议似乎是最好的行动方式。
答案 3 :(得分:1)
我发现当我使用echo任务时,该条目按照文件中的预期\期望出现。
但是,如果我之后运行属性文件任务以使用某些值填充同一文件,则它会转义文件中的所有冒号。
为了解决这个问题,我只是确保先运行属性文件任务,然后再运行echo。