执行完成后有什么方法可以执行目标吗?我有一组目标,每个目标都可以从命令行调用。执行完成后,我需要执行一些清理目标。
我可以使用antcall
,但是为每个目标编写一个很麻烦。有没有更方便的方法?
在stackoverflow上有类似的问题。所以总的来说,是的,你有两种可能性:
antcall
关于 antcall 的可用性:您需要能够指定您应该在哪个目标之后执行该目标,无论如何您都无法避免它。
只是另一种方法。
编写一个自定义的 ant 任务,其中:
扩展 Ant 的Task
,实现BuildListener
orSubBuilderListener
接口,
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);
}
最简单的方法是使用默认目标来执行所需的执行顺序
<project name="demo" default="build">
..
..
<target name="build" depends="init, do-something, do-something-else, clean"/>
</project>