1

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

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

4

3 回答 3

0

在stackoverflow上有类似的问题。所以总的来说,是的,你有两种可能性:

  • 利用antcall
  • 创建另一个取决于您的目标和您的“干净”目标的目标。

关于 antcall 的可用性:您需要能够指定您应该在哪个目标之后执行该目标,无论如何您都无法避免它。

于 2012-12-27T22:39:19.753 回答
0

只是另一种方法。

编写一个自定义的 ant 任务,其中:

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

public class ListenerTask extends Task implements SubBuildListener {
}

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

@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);
}
于 2012-12-28T07:21:18.887 回答
0

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

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

</project>
于 2012-12-28T10:52:50.790 回答