Java 为什么我必须在ant脚本中为exec输入两次数据?
在下面的ant build.xml代码段中,我正在执行rsync操作。rsync命令提示输入密码 问题是,当它提示输入密码时,我只输入了一次,然后按enter键,什么也没发生。所以我再次输入(第二次)并按enter键,然后它就可以工作了 对我来说很奇怪,我必须进入它两次,我不明白为什么Java 为什么我必须在ant脚本中为exec输入两次数据?,java,ant,build-process,Java,Ant,Build Process,在下面的ant build.xml代码段中,我正在执行rsync操作。rsync命令提示输入密码 问题是,当它提示输入密码时,我只输入了一次,然后按enter键,什么也没发生。所以我再次输入(第二次)并按enter键,然后它就可以工作了 对我来说很奇怪,我必须进入它两次,我不明白为什么 <!-- Define a target which publishes the final build apk to the test server. --> <target name="up
<!-- Define a target which publishes the final build apk to the test server. -->
<target name="upload" depends="release">
<exec executable="rsync" dir="${basedir}">
<arg value="--stats"/>
<arg value="--progress"/>
<arg value="-vaz"/>
<arg value="bin/myfile.apk"/>
<arg value="root@target:/path/to/backupfolder"/>
</exec>
</target>
可能在ant脚本中无法访问shell中已设置的某些环境变量值,例如RSYNC\u RSH、RSYNC\u PASSWORD。您可以通过相应的选项(如-e或--password file)设置这些变量/值,或者通过ant的env元素在任务内部设置这些变量。行为是什么,当您直接在shell中执行同一命令时?shell中的同一命令会提示一次,并在第一次尝试时接受我的输入。我也可以在第一次提示时按enter键,然后在第二次提示中输入密码,然后接受密码。第一个类似于假的。我希望它提示我进行身份验证,这样我就没有使用-e定义预共享密钥或定义RSYNC_密码。做这两件事中的任何一件肯定会避开这个问题,但我喜欢输入上传密码的安全性。。。