是否可以从定制 Ant 任务中执行 Ant 任务

  • 本文关键字:Ant 任务 执行 是否 ant
  • 更新时间 :
  • 英文 :


我正在编写一个自定义 Ant 任务来处理一些业务逻辑,我想调用 Move Ant 任务。

我想我会使用 Execute java 类,但我很难弄清楚。

我是否朝着正确的方向前进,或者您不能以蚂蚁的方式从另一个班级调用一个班级?

上面的答案没有回答原始问题"你能从定制 Ant 任务中执行 Ant 任务吗?

答案肯定是肯定的。

下面是一个使用复制的示例。 移动与此类似。虽然File.renameTo()可能比调用 Ant Move 任务具有更好的性能,但您可能希望从定制 Ant 任务中调用 Ant 任务肯定是有原因的,尤其是在没有合适的 JRE 替代方案的情况下。Ant API 非常广泛,提供了大量有用的任务。此外,您可能希望从不同的定制 Ant 任务中调用定制 Ant 任务。

另请参阅 http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/api/org/apache/tools/ant/taskdefs/package-summary.html

import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.taskdefs.Copy;
...
// set up the Strings inputPath and outputPath appropriately...
...
try{    
  FileSet inputSet = new FileSet();     // what to copy FROM
  inputSet.setDir(new File(inputPath)); 
  Copy copyTask = new Copy();
  copyTask.setProject(getProject());
  copyTask.setTodir(outputPath);        // where to copy TO
  copyTask.setFailOnError(true);
  copyTask.addFileset(inputSet);
  copyTask.execute();   
}
catch(Exception e){
  String msg = "Exception while invoking Copy task with inputPath="" + inputPath + "" and outputPath="" + outputPath + "": " + e.toString();
  throw new BuildException(msg, e);
}

对于您的任务,您希望调用Move任务。所以你想移动一些文件。

  1. 通常,当您使用 Java 编码时,应避免调用内置的 Ant 任务,因为它们的性能通常很差。例如,您可以使用 java.io.File 中的File.renameTo()方法,也可以使用java.nio.file.Files中的Files.move()方法(仅限 JDK7)。

  2. 如果您确实想利用某些 Ant 功能(如 <fileset>),您可能希望您的任务能够在构建 xml 中将Move任务作为嵌套任务。只需将您的任务设为TaskContainer并在其方法中进行一些过滤即可。

  3. 当然,您也可以只导入 Move 任务,设置所有需要的属性,然后调用其 execute() 方法。但我不喜欢这样。

相关内容

  • 没有找到相关文章

最新更新