我想从我的代码中使用Ant的一个任务(scp)。有什么办法吗?
我应该简单地引用Ant的一个库并直接从我的代码中调用API吗?
答案 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");
取决于您的操作系统,如果您只是在一个固定的操作系统中运行它,它实际上是一种简单易用的方式来获得您想要的。 :)