2013-03-14 32 views
0

我有一个属性文件:重写一个值在属性文件

custom.properties

此属性文件的内容是:

id=sf2j2345kkklljhlaasfsdfafsf543 
name=SOME_NAME 

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

我想打一个蚂蚁脚本替换/过写id到另一个值,我试着用蚂蚁<replace>语法:

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

我运行ant变化-ID,属性文件的内容变成:

aaa=sf2j2345kkklljhlaasfsdfafsf543 
name=SOME_NAME 

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

请不要推荐我设置tokenid的随机值,因为该值是随机生成的,并放在那里。我只想用Ant脚本覆盖随机值“id”,如何实现?

回答

1

你可以使用replaceregexp任务。尽量做到像在这个例子中

conf.ini(UTF-8)

aaa=sf2j2345kkklljhlaasfsdfafsf543 
name=SOME_NAME 

的build.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> 

我完全不知道这正则表达式是正确的,但这是你可以做到的方式。

+0

似乎正则表达式不正确,我试过了,我的属性文件的内容没有改变。 – john123 2013-03-14 11:13:49

+0

你的文件在哪个编码中被编码?正如我写的,我已经在utf-8上测试过它,它工作。这并不重要,它不起作用。这个想法是你应该使用''任务来改变文件中的一些奇怪的文本,比如'sdgf346tergrth'。正则表达式是这类问题的最佳解决方案。 – pepuch 2013-03-14 11:59:32

+0

嗨,我从匹配=“^ aaa =。*”更改为匹配=“aaa =。*”后,它可以工作。问题是关于正则表达式中的“^”。 – john123 2013-03-14 12:13:48