2011-06-26 44 views
3

在使用Eclipse IDE的ANT中的<input .../>任务时,有没有办法屏蔽密码?在Eclipse中是否有用于ANT任务的SecureInputHandler?

我看到了一种命令行做到这一点:

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

但是,这并不在Eclipse工作。

+2

证实,我与Eclipse 3.6.2,JDK 1.6.0_26,ant1.8.2不起作用在openSUSE 11.4运行/ 64 – Rebse

+0

相关问题解释为什么这个不便存在:http://stackoverflow.com/questions/2741069 – Antonio

回答

2

编辑:蚂蚁安全输入处理程序仍不能在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 Manual。你使用什么版本的Eclipse和Java?或者你可以使用:
AntForms里面有很多输入对话框,并支持密码太
或具有可选的密码屏蔽查询任务
Jera Ant Tasks

编辑:使用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> 
为例

最后写自己Inputhandler,见http://sourceforge.net/projects/emaria/files/antdocs/antinput/antinput.pdf/download的细节

+0

对AntForm的+1。脚本简单的GUI非常有用和简单的方法 –

相关问题