1

似乎 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 的回答。这也是我与 JetBrains 的相关讨论

4

2 回答 2

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}"'
/>
于 2014-07-02T01:07:15.453 回答
0

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

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

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

在此处输入图像描述

于 2014-07-02T03:17:29.543 回答