Ant将特定字符串值从一个文件传递到另一个文件

时间:2011-07-06 20:52:37

标签: regex ant filter

我正在尝试在Android应用程序中配置版本号的自动增量。 我已经配置了Ant任务,这些任务会检出文件,然后使用版本值自动增加字符串,然后自动在TFS系统中办理登机手续。所以这个test.properties文件有这个背景:

versionCode="1"

自动增量完成了这项任务:

<propertyfile file="${basedir}/src/test.properties">
  <entry key="versionCode" value="1" type="int" operation="+" />
</propertyfile>

如何配置替换此字符串的值:android:versionCode =“1”,位于目标文件androidmanifest.xml中?

2 个答案:

答案 0 :(得分:1)

我想你可以在Ant中使用ReplaceRegExp task

  

基于目录的任务,用文件或文件集中的替换模式替换给定正则表达式的出现。

它可能看起来像这样:

<replaceregexp file="${src}/androidmanifest.xml"
           match="android:versionCode=&quot;[0-9]+&quot;"
           replace="android:versionCode=&quot;${versionCode}&quot;"
/>

在运行此任务之前,可以通过读取属性文件来获取build.number属性。

答案 1 :(得分:0)

使用vanilla ant的解决方案,不需要Ant插件,您可以使用具有=

的propertyfiletemplate
f.e. named props.txt
    ...
    android:versionCode=@versionCode@
    ...

以及稍后使用您的工作流设置的属性$ {versionCode} 并使用copy + nested filterset =

从模板创建属性文件
 <!-- somewhere set in your workflow maybe via userproperty -DversionCode=42 -->
  <property name="versionCode" value="42"/>
 ...
  <copy file="props.txt" todir="/some/path" overwrite="true">
   <filterset>
    <filter token="versionCode" value="${versionCode}"/>
   </filterset>
  </copy>

/some/path/props.txt将具有=

...
android:versionCode=42
...

请参阅Ant Manual on filtersets