如何使用ANT目标从控制台覆盖build.properties值

时间:2016-11-02 10:07:49

标签: ant

config.properties的值如下:

username = system
password = ******

build.xml具有默认属性值,如下所示:

<target name="load-config-properties"
                <property file="${config.properties}"/>
                <echo>Default config params</echo>
                <property name="username" value=""/>
                <property name="password" value=""/>

现在我不想既不使用config.properties也不使用build.xml属性。所以我写了一些ant输入任务来覆盖控制台的config.properties,如下所示

 <input message="Enter password for username: "                                                                     addproperty="input.password">
    <handler type="secure"/>
</input>
var name="password" value="${input.password}"/>

我可以从控制台提供密码,但它不会覆盖config.properties。

有人能帮助我吗?

先谢谢。

1 个答案:

答案 0 :(得分:0)

如果我这样做,不要选择使用input,而应选择系统参数。

以下是示例构建脚本:

<project name="overrideProperty" basedir="." default="test">  
  <property name="username" value="system"/>
  <target name="test" description="check if the property can be overridden runtime">
    <echo message="Property username's value is ${username}"/>
  </target>
</project>

常规:使用属性中定义的相同值 如果您想使用属性username中定义的相同值,请像定期一样调用ant build,例如:

ant test

<强>输出:

test:
     [echo] Property username's value is system

BUILD SUCCESSFUL
Total time: 0 seconds
使用系统参数

覆盖属性值运行时 如果要覆盖username属性运行时(不修改构建脚本,则调用ant命令,如下所示:

ant test -Dusername="mysystem"

输出

Buildfile: D:\Temp\build2.xml

test:
     [echo] Property username's value is mysystem

BUILD SUCCESSFUL
Total time: 0 seconds

希望这有用。