似乎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:
答案 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构建步骤传递其值,如: