执行完成后有没有办法执行目标?我有一组目标,每个目标都可以从命令行调用。执行完成后,我需要执行一些清理目标。
我可以使用antcall
,但为每个目标编写一个是很麻烦的。有更方便的方式吗?
答案 0 :(得分:0)
stackoverflow上有问题like that。总的来说,是的,你有两个可能性:
antcall
关于antcall的可用性:你需要能够指定你应该执行这个目标的确切目标,无论如何都无法避免。
答案 1 :(得分:0)
另一种方法。
编写自定义ant任务,其中包括:
扩展Ant的Task
,实现BuildListener
或SubBuilderListener
接口,
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>