我使用SecureInputHandler在ant脚本中接受最终用户的密码,但是它强制用户在允许文本输入之前按Enter。这是预期行为吗?此外,我没有找到太多关于这个主题的文档,请随时为我指出任何有关这方面的资源。
<input message="Please enter password:" addproperty="password.property">
<handler classname="org.apache.tools.ant.input.SecureInputHandler" />
</input>
SecureInputHandler需要Ant 1.7.1或更高版本(以支持处理程序)和Java 6或更高版本(以提供Console类)。
如果您没有正确的Ant版本,您将得到一个错误。如果没有正确的Java版本,Ant会退回到默认的输入处理程序。
注意,你也可以使用:
<handler type="secure"/>
javadoc和源代码可以在这里看到。
在windows命令行shell中使用Ant 1.8.2和Java 1.6,我得到这个:
test:
Please enter password:<cursor here>
密码被屏蔽。输入密码并按,输入。
使用Cygwin shell,或Java 1.5在cmd shell,我得到这个:
test:
[input] Please enter password:
<cursor here>
密码未被屏蔽。输入密码并按,输入。
使用Eclipse控制台,我根本无法获得进入的密码。我输入,它在控制台上回显,我按输入,没有任何反应。
我注意到在Input任务的文档中说:
IDE的行为取决于IDE:一些挂起等待输入,一些让你输入。对于这种情况,请将密码放在(安全)属性文件,并在输入任务之前加载。
换句话说,它可能无法在IDE中工作,请使用其他方法。
exec正在干扰输入任务。它可以通过在exec任务中指定inputstring=””
来解决。参见Ant FAQ中的exec导致其他任务挂起或导致<input>
任务的奇怪行为。