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



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。

有人能帮我吗?

提前感谢。

如果我要这样做,不要选择使用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:Tempbuild2.xml
test:
     [echo] Property username's value is mysystem
BUILD SUCCESSFUL
Total time: 0 seconds

希望这会有所帮助。

相关内容

  • 没有找到相关文章