运行此脚本,而Apache Ant的被冻结(Apache Ant gets frozen while

2019-08-16 21:59发布

我想显示密码输入从ant脚本对话框。 下面是我的build.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测试

Answer 1:

它的工作原理以及在Eclipse的Juno发行版ID:20120614-1722和JDK 7在Windows XP下:

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 []不串,这是因为回声不人类可读的。



Answer 2:

作为替代方案,把storepass通过所需<signjar />在一个不可见的文件,例如.deployconf ,具有仅用户访问:例如400600 。 在加载密码ant ,并根据需要使用:

<loadfile srcfile="${user.home}/.deployconf" property="deployconf"/>

这与行之有效<signjar />尽管一些努力可能会被要求保持换行符出.deployconf



文章来源: Apache Ant gets frozen while running this script