求助:Ant中两次执行<input>任务出现无法读取控制台输入错误
解决Ant连续使用任务报错"Failed to read input from Console"的问题
我之前也碰到过一模一样的问题!先帮你梳理下可能的原因和对应的解决方案:
首先,你提供的代码里有个XML语法错误:第二个<input>标签没正确闭合,XML要求标签要么成对闭合要么用自闭合写法,先把这个修正过来:
<input id="2" message="Please enter password" addproperty="password"/> <input id="1" message="Please enter username" addproperty="user"/>
如果修正语法后还是报错,那大概率是下面两种情况之一:
1. IDE内置控制台的兼容性坑
很多IDE(比如Eclipse、IntelliJ IDEA)的内置控制台和系统原生控制台的实现逻辑不一样,Ant的<input>任务在这种环境下连续读取输入时容易出问题。
解决办法:
- 直接切换到系统原生命令行(Windows用cmd/PowerShell,Linux/macOS用Terminal)运行你的Ant脚本,执行
ant [你的目标名称],基本就能正常读取两次输入了。
2. Ant版本太低导致的bug
旧版本的Ant(比如1.9.x及更早)存在连续读取控制台输入的已知bug,第二次读取会直接失败。
解决办法:
- 把Ant升级到最新的稳定版本(比如1.10.x系列),升级后这个问题通常就能直接解决。
备用方案:用Java脚本手动读取输入(万不得已时用)
如果上面的方法都不管用,你可以试试用Ant的<script>任务结合Java代码直接读取控制台输入,这种方式绕开了Ant内置的<input>任务,兼容性拉满:
<target name="getCredentials"> <script language="java"> import java.io.BufferedReader; import java.io.InputStreamReader; try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Please enter username: "); String user = br.readLine(); project.setProperty("user", user); System.out.print("Please enter password: "); String password = br.readLine(); project.setProperty("password", password); } catch (Exception e) { e.printStackTrace(); } </script> <!-- 测试输出获取到的属性 --> <echo>Username: ${user}</echo> <echo>Password: ${password}</echo> </target>
内容的提问来源于stack exchange,提问作者lara_croft
相关产品推荐
相关产品推荐

