Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ANT任务更改在执行后提交_Java_Ant - Fatal编程技术网

Java ANT任务更改在执行后提交

Java ANT任务更改在执行后提交,java,ant,Java,Ant,我正在ANT构建脚本中使用属性文件。现在,我正在根据用户输入修改文件中的一些属性。问题是,这些更改在执行期间无效,但在执行完成后无效 以下是ANT脚本: <project name="testProject" default="test" basedir="."> <property file="my.properties"/> <target name="test" depends="input"> <echo>$

我正在ANT构建脚本中使用属性文件。现在,我正在根据用户输入修改文件中的一些属性。问题是,这些更改在执行期间无效,但在执行完成后无效

以下是ANT脚本:

<project name="testProject" default="test" basedir=".">
    <property file="my.properties"/>
    <target name="test" depends="input">
        <echo>${user}</echo>
    </target>

    <target name="input">
        <echo>Taking user input</echo>
        <input message="Please enter db-username:" addproperty="db.user"/>

        <propertyfile   file="my.properties">
            <entry  key="user" value="${db.user}"/>
        </propertyfile>
    </target>
</project>
以下是运行后的输出:

D:\tmp>ant
Buildfile: D:\tmp\build.xml

input:
     [echo] Taking user input
    [input] Please enter db-username:
me
[propertyfile] Updating property file: D:\tmp\my.properties

test:
     [echo] test

BUILD SUCCESSFUL
Total time: 4 seconds

但是文件my.properties更新为user=me。请告诉我这是正确的做法还是其他选择。

有趣的情况是,你可以按照现在的方式行事。没有问题,但维护起来不必要复杂

如果您有不同的db用户名,您应该在属性文件中预先定义,而不是在执行期间覆盖

dev.username="dev1234"(..${db.user})
qa.username="q1234"


prod.username="prodxxx"

首先,一旦设置了Ant属性,它的值是不可变的。它不能改变

第二,一旦属性设置为,该属性的值就不能更改。即使my.properties已更改,对的进一步调用也不会覆盖任何现有属性

第三,测试目标中的输入不会回显用户的输入

这个

<target name="test" depends="input">
    <echo>${user}</echo>
</target>
上面在my.properties中创建了一个名为username的属性。但是,脚本的其余部分引用了普通用户属性。

谢谢您的回答。用户名/用户输入错误,我已更正。但我想你有问题了。
<target name="test" depends="input">
    <echo>${user}</echo>
</target>
<target name="test" depends="input">
    <echo>${db.user}</echo>
</target>
<propertyfile   file="my.properties">
    <entry  key="username" value="${db.user}"/>
</propertyfile>