我在项目中使用ant任务来做很多事情,比如创建目录,删除文件等等。在这种情况下,我从我的SVN服务器获得一个分支列表,它完美地工作。这一切都发生在我的程序运行期间,从java代码中解雇任务。
我的问题是:是否可以操作ant文件(tasks.xml)?用户应输入用户名/密码组合,在触发任务时,应在我的ant-task中使用这些凭据而不是属性。
蚁文件:
<target name="getBranchList">
<exec executable="c:/svnclient/svn.exe"
output="c:/test/output/versionsonsvn.log">
<arg value="ls" />
<arg value="--username" />
<arg value="${svn.user}" />
<arg value="--password" />
<arg value="${svn.password}" />
<arg value="--non-interactive" />
<arg value="--trust-server-cert" />
<arg value="${svn.server}" />
</exec>
</target>
我如何在Java中使用它:
import org.apache.tools.ant.*;
public static void main(final String[] args) {
Vector<String> v = new Vector<String>();
v.add("getBranchList");
v.add("someOtherTask");
fireAntTasks("c:/test/tasks.xml", v); }
private void fireAntTasks(String fileName, Vector<String> v) {
File taskFile = new File(fileName);
if (buildFile.exists()) {
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
p.addReference("ant.projectHelper", helper);
helper.parse(p, buildFile);
p.executeTargets(v);
} else {
System.out.println("File not found!");
}
}
我能想象的唯一解决方案是直接操作文件(在运行时设置“tasks.xml”中的属性)。但也许有更好的方法让这个工作......
问候
基督教
答案 0 :(得分:1)
我不确定我是否完全理解你,但我猜你试图让用户输入来替换一些属性。
您可以使用Input Task来提示您可以存储的用户的变量。
或者您可以在通过property task执行ant之前加载用户编辑的属性文件。
答案 1 :(得分:1)
您可以使用loadproperties task和属性文件
来实现这样的目标<loadproperties srcFile="build.properties"/>
每个用户都必须在构建目录中创建build.properties
并将值放在其中:
svn.user = user
svn.password = password
您也可以创建它,以便这些文件驻留在主目录中:
<loadproperties srcFile="${user.home}/build.properties"/>
这样文件将受到更多保护。