【发布时间】:2014-07-01 10:42:52
【问题描述】:
似乎 TeamCity 参数 ${build.counter} 在我们的 ant build.xml 中没有解析。我们有:
<replaceregexp
file="AndroidManifest.xml"
match='android:versionCode="(.*)"'
replace='android:versionCode="${build.counter}"'
/>
这会引发错误:
不允许使用字符串类型(在 'versionCode' 处,值为 '${build.counter}')
看起来它正在将参数“${build.counter}”作为文字字符串。
使用另一个 TeamCity 整数参数代替 ${build.counter},例如 ${teamcity.build.id},可以正常工作。
有人知道为什么会这样吗?
更新
感谢 Biswajit_86 的回答。这里也是我的related discussion with JetBrains:
【问题讨论】:
-
你确定这个属性完全解析了吗?尝试在此步骤之前添加
<echo>${build.counter}</echo>。一个随机的挑剔:您的正则表达式替换不使用捕获组引用,因此您的匹配模式不需要括号。 -
@CAustin - 你是对的!这给了我“步骤 2/2] echo ${build.counter}”。那么为什么当其他属性解析时这个属性不解析呢?
-
老实说,我对 TeamCity 一无所知。这就是你所有财产的来源,对吧?看起来保存这些属性的文件格式错误,好像它包含
build.counter=Step 2/2] echo ${build.counter}或类似的东西。 -
那是您的 echo 线路生成的日志。 TeamCity 在运行时生成这些属性。
-
对 Jetbrains 提出了很好的要求,我赞成。
标签: android ant teamcity teamcity-8.0