Существует ли SecureInputHandler для задач ANT в Eclipse? - PullRequest
3 голосов
/ 26 июня 2011

Есть ли способ маскировки пароля при использовании задачи <input .../> в ANT из Eclipse IDE ?

Я вижу способ сделать это из командной строки:

<input message="secure-input:" addproperty="the.password">
    <handler classname="org.apache.tools.ant.input.SecureInputHandler" />
</input>

Но в затмении это не работает.

1 Ответ

2 голосов
/ 26 июня 2011

РЕДАКТИРОВАТЬ: Поскольку 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...