build.xml中的T​​eamCity build.counter参数

时间:2014-07-01 10:42:52

标签: android ant teamcity teamcity-8.0

似乎TeamCity参数$ {build.counter}没有在我们的ant build.xml中解析。我们有:

<replaceregexp 
        file="AndroidManifest.xml"
        match='android:versionCode="(.*)"'
        replace='android:versionCode="${build.counter}"'
/>

这会引发错误:

  

不允许使用字符串类型(在&#39; versionCode&#39;值为&#39; $ {build.counter}&#39;)

它看起来像是参数&#34; $ {build.counter}&#34;作为文字字符串。

使用另一个TeamCity整数参数代替$ {build.counter},例如$ {teamcity.build.id},工作正常。

有谁知道为什么会这样?

更新

感谢Biswajit_86的回答。这也是我的related discussion with JetBrains

2 个答案:

答案 0 :(得分:3)

你的构建文件根本不知道build.counter的价值。它们只能读取系统属性,但build.counter是一个配置参数。

为此,请声明一个名为system.BUILD.COUNTER的系统参数,其值为%build.counter%并将其传递给目标。如果您将abnt build.xml更改为$ {BUILD.COUNTER},它将正常工作

构建参数部分 system.BUILD.COUNTER%build.counter%

构建xml文件

<replaceregexp 
        file="AndroidManifest.xml"
        match='android:versionCode="(.*)"'
        replace='android:versionCode="${BUILD.COUNTER}"'
/>

答案 1 :(得分:0)

Ant不会直接读取团队变量。您需要在蚂蚁项目中创建类似的build.counter属性,如:

<property name="build.conuter" value=""/>

并从Teamcity构建步骤传递其值,如:

enter image description here