如何依赖嵌套蚂蚁项目中的父目标?

时间:2016-05-05 18:21:58

标签: ant

给出build.xml文件:

<project name="main" default="build">

<target name="main.init"/>
<extension-point name="init.tasks" depends="main.init"/>
<target name="init" depends="init.tasks"/>

<extension-point name="build.tasks" depends="init"/>
<target name="build" depends="build.tasks"/>

<include file="subsystem1.xml"/>
<include file="subsystem2.xml"/>
</project>

还有一个子系统X.xml,如:

<project name="subsystemX">
<task name="init" extensionOf="init.tasks"/>
<task name="build" depends="init" extensionOf="build.tasks"/>
</project>

我现在可以说ant build,所有子系统都会按预期通过initbuild

但是,我还希望能够说ant subsystem.build并仅构建该子系统。问题是每个子系统的build取决于所有其他子系统'init。在这种情况下,只会执行subsystem.init,因为ant只会查看subsystem.build的依赖项。

理想情况下,我想将主init添加为每个子系统的build任务的依赖项,但include盲目地预先设置“子系统”。每个任务名称和依赖条目,以便我似乎无法引用任何外部。

如何使subsystem.build取决于主init任务?

1 个答案:

答案 0 :(得分:0)

我正在使用解决方法:

在build.xml中,我为每个包含的文件添加了其他目标:

<target name="subsystem1.global.init" depends="main.init"/>
<target name="subsystem1.all.init" depends="init"/>
<include file="subsystem1.xml" as="subsystem1"/>

<target name="subststem2.global.init" depends="main.init"/>
<target name="subsystem2.all.init" depends="init"/>
<include file="subsystem2.xml" as="subsystem2"/>

然后在subsystemX.xml中,我可以依赖“global.init”和“all.init”,例如

<project name="subsystemX">
<task name="init" depends="global.init" extensionOf="init.tasks" />
<task name="build" depends="init, all.init" extensionOf="build.tasks"/>
</project>

正如您所看到的,这种情况不能很好地扩展,我仍然希望找到更好的解决方案。