完成后执行目标

时间:2012-12-27 22:09:52

标签: java ant

执行完成后有没有办法执行目标?我有一组目标,每个目标都可以从命令行调用。执行完成后,我需要执行一些清理目标。

我可以使用antcall,但为每个目标编写一个是很麻烦的。有更方便的方式吗?

3 个答案:

答案 0 :(得分:0)

stackoverflow上有问题like that。总的来说,是的,你有两个可能性:

  • 使用antcall
  • 创建另一个依赖于您和“干净”目标的目标。

关于antcall的可用性:你需要能够指定你应该执行这个目标的确切目标,无论如何都无法避免。

答案 1 :(得分:0)

另一种方法。

编写自定义ant任务,其中包括:

扩展Ant的Task,实现BuildListenerSubBuilderListener接口,

public class ListenerTask extends Task implements SubBuildListener {
}

buildFinished方法中调用指定的目标(或直接用Java编写清理代码),

@Override
public void buildFinished(BuildEvent be) {
    Target target = (Target)getProject().getTargets().get("Name-To-Your-CleanUp-Target");
    // run the target
    target.performTasks();
}

当然,在构建的最初阶段就将自己注册到项目中。

@Override
public void execute() throws BuildException {
    // addBuildListener will check if the listener has been added
    getProject().addBuildListener(this);
}

答案 2 :(得分:0)

执行此操作的最简单方法是使用执行所需执行顺序的默认目标

<project name="demo" default="build">
    ..
    ..
    <target name="build" depends="init, do-something, do-something-else, clean"/>

</project>