如何在我的Java代码中使用Apache Ant的任务

时间:2012-12-12 02:28:32

标签: java ant scp

我想从我的代码中使用Ant的一个任务(scp)。有什么办法吗?

我应该简单地引用Ant的一个库并直接从我的代码中调用API吗?

4 个答案:

答案 0 :(得分:5)

是的,您可以从代码中轻松调用Ant任务。

以下是如何扩展Ant任务的示例:

import org.apache.tools.ant.Project;
import org.apache.tools.ant.Target;
import org.apache.tools.ant.taskdefs.Copy;

public class MyCopyTask extends Copy {
    public MyCopyTask() {
        setProject(new Project());
        getProject().init();
        setTaskName("MyCopy");
        setTaskType("MyCopy");
        setOwningTarget(new Target());
    }
}

以下是在代码中使用它的方法:

MyCopyTask copier = new MyCopyTask();
copier.setFile(srcFile);
copier.setTofile(toFile);
copier.execute();

以下是更多信息:

答案 1 :(得分:0)

这肯定会将Ant任务包含在Java代码中。作为最后的手段,我们之前已经这样做了。一个问题是,您可能会设置一些Ant特定属性(例如setProject)以使任务实际工作。这可能会使它使用起来有点尴尬。此外,正如您所提到的,您可能需要Ant运行时库来运行它。

我的第一个建议是看看是否有办法在没有Ant开销的情况下直接调用你想要的实际SCP代码。第二种方法是查找Java SCP库或找出Ant scp任务正在使用的内容。有关更多示例,请参阅scp via java。最终的建议是包括如上所述的Ant任务。

答案 2 :(得分:0)

我认为调用系统调用会更简单:

try {
            Runtime.getRuntime().exec("ant scpTask");
        } catch (IOException e) {
            e.printStackTrace();
        }

答案 3 :(得分:0)

我认为Runtime.getRuntime().exec("ant deploy");取决于您的操作系统,如果您只是在一个固定的操作系统中运行它,它实际上是一种简单易用的方式来获得您想要的。 :)