РЕДАКТИРОВАТЬ: Поскольку ant ecl-обработчик ввода по-прежнему не работает в eclipse 4.x, вот решение, основанное на задаче ant-сценария, работающей со встроенным движком javascript (начиная с JDK 1.6.0_06), поэтому дополнительные библиотеки не нужны:
<project>
<script language="javascript">
// imports
importClass(javax.swing.JPasswordField);
importClass(javax.swing.JOptionPane);
var pw = new JPasswordField();
var choice = JOptionPane.showConfirmDialog(null, pw, "Enter Password..", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (choice == JOptionPane.OK_OPTION) {
// create ant property
project.setNewProperty("pwd", pw.getText());
} else {
throw "Password required !!";
}
</script>
<echo>$${pwd} => ${pwd}</echo>
</project>
Метод JPasswordField.getText () устарел,
обычно вы используете getPassword (), но он не работает.
// create ant property
var s = new String(pw.getPassword());
project.setNewProperty("pwd", s);
принимает только chararray, тогда как:
// create ant property
var s = String.valueOf(pw.getPassword());
project.setNewProperty("pwd", s);
Результат:
[echo] ${pwd} => function String() { [native code for String.String, arity=1] }
возможно ошибка в движке javascript !? (с использованием JDK 1.7.0_60)
Поскольку версия 1.7.1 Ant поддерживает функцию безопасного ввода с консоли Java 1.6, см. Руководство по Ant . Какую версию Eclipse и Java вы используете? В качестве альтернативы вы можете использовать:
AntForms , который имеет множество диалогов ввода и поддержку паролей тоже
или
Задачи Jera Ant , в которых есть задача запроса с дополнительной маскировкой пароля
РЕДАКТИРОВАТЬ : добавление конкретного примера с использованием groovy ..
Вы можете использовать язык сценариев для открытия диалога, вот пример использования Groovy =
<project>
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
<groovy>
import groovy.swing.SwingBuilder
import javax.swing.JFrame
boolean isAlive = true
swing = new SwingBuilder()
button = swing.button('OK')
frame = swing.frame(title:'Password', defaultCloseOperation:JFrame.EXIT_ON_CLOSE) {
panel {
pw = passwordField(columns:10)
widget(button)
}
}
button.actionPerformed = {
// set Ant property for further processing
properties.'password' = pw.text
isAlive = false
}
frame.pack()
frame.show()
// prevent ant from closing the window
while(isAlive) {
sleep(1000)
}
</groovy>
<echo>$${password} = ${password}</echo>
</project>
Наконец, напишите свой собственный обработчик ввода, подробности см. http://sourceforge.net/projects/emaria/files/antdocs/antinput/antinput.pdf/download