首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行时操作ANT任务(设置属性)

在运行时操作ANT任务(设置属性)
EN

Stack Overflow用户
提问于 2012-04-27 23:07:30
回答 2查看 2.1K关注 0票数 0

我在我的项目中使用ant任务来做很多事情,比如创建目录、删除文件等等。在本例中,我从SVN-server获得了一个分支列表,它工作得很好。这一切都发生在我的程序运行时,从java代码中触发任务。

我的问题是:有没有可能操纵ant文件(tasks.xml)?用户应该输入用户名/密码组合,并且在启动任务时,应该在我的ant-task中使用这些凭据,而不是属性。

Ant-file:

代码语言:javascript
复制
<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中使用它:

代码语言:javascript
复制
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“中的属性)。但是也许有一个更好的方法来让它工作。

问候

克里斯蒂安

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-27 23:18:24

我不确定我是否完全理解你的意思,但我猜你是想让用户输入来替换一些属性。

您可以使用Input Task,它将提示用户,您可以将其存储到变量中。

或者,您可以通过property task加载用户在执行ant之前编辑的属性文件。

票数 1
EN

Stack Overflow用户

发布于 2012-04-27 23:19:33

您可以使用loadproperties task和一个属性文件来实现如下所示:

代码语言:javascript
复制
<loadproperties srcFile="build.properties"/>

每个用户都必须在构建目录中创建一个build.properties,并将值放入其中,如下所示:

代码语言:javascript
复制
svn.user = user
svn.password = password

您也可以这样做,使此文件驻留在主目录中:

代码语言:javascript
复制
<loadproperties srcFile="${user.home}/build.properties"/>

这样,文件将受到更多的保护。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10353121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档