2016-05-05 49 views
0

給定一個build.xml文件:我如何依賴嵌套ant項目中的父目標?

<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> 

而一個subsystemX.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任務?

回答

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,我可以依靠「全球性的。 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> 

正如你所看到的,這不能很好地擴展,我仍然希望找到一個更好的解決方案。

相關問題