我正在为使用以下格式的版本控制的应用程序开发Ant构建过程:major.minor.buildcount.所以目前应用程序大约是2.1.52,我们在2.1版本,并且有35个版本.
我现在正在添加一个ant目标,询问用户是否要推进主要版本和/或次要版本.
当我从命令行运行目标时,我想遵循以下内容:
@@ ant version
Versioning application...
Would you like to advance the major version to 3? (Y|n)
@@ n
Not Advancing major version
Would you like to advance the minor version to 2? (y|N)
@@ y
Advancing minor version
Run Code Online (Sandbox Code Playgroud)
前面加上@@的行是我想要的用户输入.我的主要和次要版本存储在build.properties文件中.
到目前为止,这是我的代码
<?xml version="1.0"?>
<project name="StudentMS" default="zip" basedir=".">
<propertyfile file="./.ant/build.properties">
<entry key="version.buildnumber" type="int" default="0" operation="+" pattern="00" />
</propertyfile>
<property file="./.ant/build.properties" />
<property name="sourceDir" location="/Users/dave/Workspace/ColdFusion/StudentMs" />
<property name="buildDir" location="${sourceDir}/builds" />
<target name="version" description="Adds a major and minor version to the build.">
<input message="Advance major version? ${version.major}" addproperty="updatemajor" validargs="y,n" defaultvalue="n" />
<propertyfile file="./.ant/build.properties">
<entry key="version.major" type="int" default="0" operation="+" pattern="00" />
</propertyfile>
<input message="Advance minor version? ${version.minor}" addproperty="updateminor" validargs="y,n" defaultvalue="y" />
<propertyfile file="./.ant/build.properties">
<entry key="version.minor" type="int" default="0" operation="+" pattern="00" />
</propertyfile>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
还有我的build.properties
#Tue, 29 Mar 2011 11:46:30 -0400
version.buildnumber=35
version.major=2
version.minor=1
Run Code Online (Sandbox Code Playgroud)
我仍然是Ant的新手,所以我很抱歉我无法发布更高级的代码.所以我需要做的第一件事就是在我的属性文件编辑中添加一些条件.
你想要的是通过组合条件和antcall任务以及添加一些额外的目标来实现的.
我认为这样的事情应该有效:
<property file="./.ant/build.properties" />
<property name="sourceDir" location="/Users/dave/Workspace/ColdFusion/StudentMs" />
<property name="buildDir" location="${sourceDir}/builds" />
<target name="version" description="Adds a major and minor version to the build.">
<input message="Advance major version? ${version.major}" addproperty="updatemajor" validargs="y,n" defaultvalue="n" />
<condition property="executeMajor">
<and>
<isset property="updatemajor" />
<equals arg1="${updatemajor}" arg2="y" />
</and>
</condition>
<antcall target="update_major" />
<input message="Advance minor version? ${version.minor}" addproperty="updateminor" validargs="y,n" defaultvalue="y" />
<condition property="executeMinor">
<and>
<isset property="updateminor" />
<equals arg1="${updateminor}" arg2="y" />
</and>
</condition>
<antcall target="update_minor" />
</target>
<target name="update_major" if="executeMajor">
<!-- Code to update major here -->
</target>
<target name="update_minor" if="executeMinor">
<!-- Code to update minor here -->
</target>
Run Code Online (Sandbox Code Playgroud)
基本上,它的作用是在updatemajor/updateminor设置为"y"的情况下设置executeMajor和executeMinor属性.然后,只要设置了executeMajor/Minor变量,ant就会运行更新目标,否则它将跳过它们.
| 归档时间: |
|
| 查看次数: |
7133 次 |
| 最近记录: |