【问题标题】:Override one value in properties file覆盖属性文件中的一个值
【发布时间】:2013-03-14 10:30:00
【问题描述】:

我有一个属性文件:

custom.properties

这个属性文件的内容是:

id=sf2j2345kkklljhlaasfsdfafsf543
name=SOME_NAME

id 的值是一个很长的随机字符串。

我想制作一个 Ant 脚本来替换/覆盖 id 的值到另一个,我尝试使用 Ant <replace> 语法:

<target name="change-id">
      <replace file="custom.properties" token="id" value="aaa" />
</target>

我运行ant change-id,properties文件的内容变成:

aaa=sf2j2345kkklljhlaasfsdfafsf543
name=SOME_NAME

这就是键“id”被替换而不是它的值。但我需要将值替换为 "aaa" ,如何在 Ant 中实现?

请不要建议我token 设置为id 的随机值,因为该值是随机生成并放在那里的。我只想用Ant脚本覆盖“id”的随机值,怎么实现呢?

【问题讨论】:

    标签: ant replace


    【解决方案1】:

    您可以使用replaceregexp 任务来完成。试着像这个例子那样做

    conf.ini (utf-8)

    aaa=sf2j2345kkklljhlaasfsdfafsf543
    name=SOME_NAME
    

    构建.xml

    <project name="regexp.replace.test" default="test">
    
        <target name="test">
            <replaceregexp file="conf.ini" match="^aaa=.*" replace="aaa=newId" encoding="UTF-8" />
        </target>
    
    </project>
    

    我不知道这个正则表达式是否正确,但你可以这样做。

    【讨论】:

    • 好像正则表达式不正确,我试过了,我的properties文件内容没有变化。
    • 您的文件采用哪种编码方式编码?正如我所写的,我已经在 utf-8 上对其进行了测试,并且可以正常工作。它不起作用并不重要。这个想法是您应该使用&lt;replaceregexp/&gt; 任务来更改文件中的一些奇怪文本,例如sdgf346tergrth。正则表达式是此类问题的最佳解决方案。
    • 嗨,我从 match="^aaa=.*" 更改为 match="aaa=.*" 后,它可以工作了。问题在于正则表达式中的“^”。
    • 谢谢。如果我的回答是您的问题的解决方案,您可以将其标记为“有帮助”。
    猜你喜欢
    • 2011-11-19
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2011-09-10
    • 2015-10-28
    相关资源
    最近更新 更多