0

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 でテストしています

4

2 に答える 2

1

Eclipse Juno リリース ビルド 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[] を返します。これは、エコーが人間が判読できないためです。

于 2013-02-12T15:46:53.740 に答える
1

storepass別の方法として、必要な by<signjar />を非表示のファイルに入れます。たとえば.deployconf、ユーザーのみがアクセスできるようにし400ます600。にパスワードをロードし、ant必要に応じて使用します。

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

これは でうまく機能しますが<signjar />、改行を.deployconf.

于 2013-02-12T16:59:28.603 に答える