Apache Ant在运行此脚本时被冻结
我想从ant脚本中显示一个密码输入对话框。 这是我在build.xml中的代码:
importClass(javax.swing.JPasswordField); importClass(javax.swing.JOptionPane); var pf = new JPasswordField(); var okCxl = JOptionPane.showConfirmDialog(null, pf, "Enter Password", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if (okCxl == JOptionPane.OK_OPTION) { project.setNewProperty("keypass", pf.getPassword()); } else { throw "Password is required"; } ...
这段代码永远挂起。 怎么了?
更新:我正在使用Mac OS X 10.8.2和Oracle JDK 7u13进行测试
它在Eclipse Juno Release Build id:20120614-1722和Windows XP下的JDK 7中运行良好:
Buildfile: D:\...\build.xml sign: [echo] [C@ea1569 BUILD SUCCESSFUL Total time: 7 seconds
它在Run.bat中运行良好:
D:\>call d:\ant\bin\ant Buildfile: D:\...\build.xml sign: [echo] [C@12a642 BUILD SUCCESSFUL Total time: 8 seconds
但是getPassword()返回char []而不是String,这是因为echo不是人类可读的。
作为替代方案,将
所需的storepass
放在一个不可见的文件中,例如.deployconf
,具有用户访问权限:例如400
或600
。 在ant
加载密码,并根据需要使用:
这适用于
,尽管可能需要一些努力来保持.deployconf
换行符。