我有一個構建系統,其中許多組件完全相同,所以我一直在更改它以在大多數構建任務的常用文件上使用「導入」。然後,構建系統還需要構建它所依賴的任何模塊。所以我粗略地...在Ant中嵌套導入
common.xml
project1.xml
- import common.xml
project2.xml
- include project1.xml
- import common.xml
在common.xml中有一個名爲'build'的目標。我希望project2能夠包含project1並使用擴展點來放置對構建目標的依賴。但由於某種原因,它不承認project1有構建目標。如果我將其更改爲依賴於project1.xml中定義的目標,那就沒問題。但我需要能夠指定common.xml中的目標。
有沒有辦法做到這一點?
沒有ant-contrib。該項目曾經使用過,但我試圖擺脫它,所以我們沒有可怕的程序構建系統代碼。該項目有許多依賴關係的情況,看起來像鑽石和適當的依賴關係圖(螞蟻自動生成的依賴關係圖)將大有幫助。
因此,我創建一些簡單的文件來說明我的問題。
<project name="top" default="build">
<include file="mid.xml" as="mid" />
<target name="build">
<antcall target="mid.build" />
</target>
</project>
<project name="mid" default="build">
<!-- <target name="build"> -->
<!-- <echo message="build mid" /> -->
<!-- </target> -->
<import file="common.xml" />
</project>
<project name="common">
<target name="build">
<echo message="build common" />
</target>
</project>
失敗。 top.xml找不到mid.build。當我運行ant -p列出目標時,它顯示build和common.build。所以我嘗試添加到mid.xml構建文件中,並且正確地構建它。現在唯一的問題是,如果我取消上面的mid註釋來定義自己的構建步驟,它會被導入覆蓋並被忽略。所以它最終變成[build,common.build]而不是[build,mid.build]。