Java ANT任务更改在执行后提交
我正在ANT构建脚本中使用属性文件。现在,我正在根据用户输入修改文件中的一些属性。问题是,这些更改在执行期间无效,但在执行完成后无效 以下是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>$
<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>