使用ANT更新内部版本号并注入源代码
在build.xml文件中,我在属性文件中递增生成版本号,如下所示:使用ANT更新内部版本号并注入源代码,ant,build-process,Ant,Build Process,在build.xml文件中,我在属性文件中递增生成版本号,如下所示: <target name="minor"> <propertyfile file="build_info.properties"> <entry key="build.minor.number" type="int" operation="+" value="1" pattern="00" /> <entry key="build.revi
<target name="minor">
<propertyfile file="build_info.properties">
<entry key="build.minor.number" type="int" operation="+" value="1" pattern="00" />
<entry key="build.revision.number" type="int" value="0" pattern="00" />
</propertyfile>
</target>
通过使用:
<target name="documentVersion">
<replaceregexp file="${referer}" match="@\(#\).*@" replace="@(#)${build.major.number}.${build.minor.number}.${build.revision.number})@" />
</target>
现在这一分类有效了。它确实取代了该版本,但版本号已过时。因此,每当我运行ANT脚本时,build_info.properties都会更新到正确的版本,但我的源代码文件使用的是预更新的值
在调用替换之前,我已回音检查是否确实在增加构建编号,并且我注意到回音:
<echo>${build.minor.number}</echo>
//After updating it still shows old non updated value here but the new value in the property file.
${build.minor.number}
//更新后,它仍然在此处显示未更新的旧值,但在属性文件中显示新值。
那么,有没有一种方法可以检索属性文件中的更新值,以便我可以使用它来注入到我的源代码中呢
干杯所以在花了几个小时没能解决这个问题后,我发布了这个问题,20分钟后再解决它 问题是我在构建文件的顶部有以下内容:
<property file="build_info.properties"/>
我猜这是由于作用域,属性是不可变的,因此我永远无法更新值。删除该行,然后添加以下内容,使其工作正常:
<target name="injectVersion">
<property file="build_info.properties"/>
<replaceregexp file="${referer}" match="@\(#\).*@" replace="@(#)${build.major.number}.${build.minor.number}.${build.revision.number})@" />
</target>
为什么不直接使用?
Project used to increment build number in build.properties file
file parameters:
version.number=
build.number=
if changes version.number then build.number starts from 1
====================================================================== -->
相关您应该提供一些解释,而不仅仅是剪切“n”粘贴代码作为答案,以获得高质量的答案。
Project used to increment build number in build.properties file
file parameters:
version.number=
build.number=
if changes version.number then build.number starts from 1
====================================================================== -->
<property name="versionFileName" value="build.properties" />
<property file="${versionFileName}" />
<property name="currentVersion" value="0.1.37"/>
<target name="calculate.version.build">
<script language="javascript">
<![CDATA[
var currentVersion = project.getProperty("currentVersion");
var oldVersion = project.getProperty("version.number");
var buildNumber = project.getProperty("build.number");
if (!currentVersion.equals(oldVersion)){
project.setProperty("currentBuild", 1);
} else {
var newBuildNumber = ++buildNumber;
project.setProperty("currentBuild", newBuildNumber);
}
]]>
</script>
</target>
<target name="update.version.build" depends="calculate.version.build">
<propertyfile file="${versionFileName}">
<entry key="build.number" type="int" operation="=" value="${currentBuild}" />
<entry key="version.number" type="string" operation="=" value="${currentVersion}" />
</propertyfile>
<echo message="New version: ${currentVersion}.${currentBuild}" />
</target>