我有一个需要从 Subversion 签出目录的 Ant 脚本。这可以使用 svnant/svnkit。但是,Subversion 访问是经过身份验证的,我不想将我的用户密码存储在文件中。
我可以让 svnkit 弹出密码对话框吗?或者更好的是,让它使用与 Eclipse 内部的 subversive/svnkit 相同的凭证缓存(用户名可以从 build.properties 中读取)?
我无法切换到基于公钥的身份验证,因为我不控制颠覆服务器。
现在,它只是说“svn:身份验证已取消”。
这个答案的模拟:
<input message="password:>" addproperty="password">
<handler classname="org.apache.tools.ant.input.SecureInputHandler" />
</input>
这将使该人的用户名不显示。这需要 Ant 1.7.1 或更高版本。
为了回答我自己的问题,我可以使用 Ant [input] 任务向用户询问密码并将其存储在可以传递给 [svn] 任务的属性中。
<target name="checkout">
<input
message="Please enter subversion password for ${username}:"
addproperty="password"
/>
<svn svnkit="${svnkit}" username="${username}" password="${password}">
<checkout url="${urlRepos}/project" destPath="web/" />
</svn>
</target>
不幸的是,这不会用 * * * * * 掩盖密码,我仍然想从凭证缓存中读取......
Jera Ant Tasks提供了一个支持密码输入的[query] 任务:
<taskdef name="query" classname="com.jera.anttasks.Query" />
<target name="checkout">
<query
message="Please enter subversion password for ${username}:"
name="password" password="true"
/>
<svn svnkit="${svnkit}" username="${username}" password="${password}">
<checkout url="${urlRepos}/project" destPath="web/" />
</svn>
</target>
使用 ant-dialog ( http://sourceforge.net/projects/ant-dialog/ ),它可以显示一个 java awt 窗口,以便您输入属性。它还具有类似于输入字段类型的 *** 密码。