给出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
,所有子系统都会按预期通过init
和build
。
但是,我还希望能够说ant subsystem.build
并仅构建该子系统。问题是每个子系统的build
取决于所有其他子系统'init
。在这种情况下,只会执行subsystem.init
,因为ant只会查看subsystem.build
的依赖项。
理想情况下,我想将主init
添加为每个子系统的build
任务的依赖项,但include
盲目地预先设置“子系统”。每个任务名称和依赖条目,以便我似乎无法引用任何外部。
如何使subsystem.build
取决于主init
任务?
答案 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>
正如您所看到的,这种情况不能很好地扩展,我仍然希望找到更好的解决方案。