java Apache Ant在运行此脚本时被冻结
我想从ant脚本显示一个密码输入对话框。这是我在构建中的代码。xml:
<target name="sign" unless="isUpToDate">
<script language="javascript">
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";
}
</script>
<echo message="${keypass}"></echo>
...
</target>
此代码永远挂起。怎么了
更新: 我正在Mac OS X 10.8.2和Oracle JDK 7u13中进行测试
# 1 楼答案
它在Windows XP下的Eclipse Juno版本构建id:20120614-1722和JDK 7中运行良好:
从运行开始,它运行良好。蝙蝠:
但是getPassword()返回的是char[]而不是String,这是因为echo不是人类可读的
# 2 楼答案
或者,将
<signjar />
所需的storepass
放在一个不可见的文件中,例如.deployconf
,只允许用户访问:例如400
或600
。在ant
中加载密码,并根据需要使用:这对
<signjar />
很有效,尽管可能需要一些努力才能将linefeed排除在.deployconf
之外