簡體   English   中英

Apache Ant在運行此腳本時被凍結

[英]Apache Ant gets frozen while running this script

我想從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進行測試

它在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不是人類可讀的。

作為替代方案,將<signjar />所需的storepass放在一個不可見的文件中,例如.deployconf ,具有用戶訪問權限:例如400600 ant加載密碼,並根據需要使用:

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

這適用於<signjar /> ,盡管可能需要一些努力來保持.deployconf換行符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM