询问用户是否|无输入

Dav*_*ong 6 versioning ant

我正在为使用以下格式的版本控制的应用程序开发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的新手,所以我很抱歉我无法发布更高级的代码.所以我需要做的第一件事就是在我的属性文件编辑中添加一些条件.

jba*_*sas 8

你想要的是通过组合条件和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就会运行更新目标,否则它将跳过它们.