我使用Apache Ant以下列方式:解決方法嵌套subant特性替代行爲(自1.8.0)
我有項目P1,P2,P3。其中一些項目有模塊,比方說P2有M1,M2等。 所有項目都有自己的ant構建腳本,並且他們都必須實現一組預定義的目標(build,dist等),腳本需要一些屬性被調用時被定義。假設(build.dir.base)
模塊遵循相似的結構,因此每個模塊都有自己的構建文件,用於實現預定義的一組目標,並期望設置一些屬性。 (讓說build.dir.base - 相同的項目)
我也有建立所有項目的全局ant腳本(或子集)
在代碼看起來像:
集結all.xml:
<project name="x">
<property name="build.dir.base" location="system.build.base" />
<target name="build">
<echo message="build.dir.base as defined for build-all.xml=${build.dir.base}" />
<subant antfile="build.xml" target="build" inheritAll="false" inheritRefs="false">
<dirset dir="${system.base}" includes="${project-list}" />
<property name="build.dir.base" location="${build.dir.base}" />
</subant>
</target>
</project>
build.xml文件(一個用於與模塊的每一個項目,沒有subant
如果項目沒有模塊):
<project name="y">
<property name="build.dir" location="${basedir}/build" />
<target name="build">
<echo message="build.dir.base as defined for project=${build.dir.base}" />
<subant antfile="build.xml" target="build" inheritAll="false" inheritRefs="false">
<dirset dir="project.base" includes="${module-list}" />
<property name="build.dir.base" location="${build.dir.base}/${name}" />
</subant>
</target>
</project>
而對於具有模塊項目: 的build.xml(爲一個模塊):
<project name="z">
<property name="build.dir.base" location="build.dir.base" />
<target name="build">
<echo message="build.dir.base as defined for module=${build.dir.base}" />
</target>
</project>
該結構允許項目被獨立地內置,也模塊可以獨立地建立或整個系統可以建使用build-all.xml。 此外,最終產品具有如下因素結構:
- $ {system.build.base}/P1,
- $ {system.build.base}/P2/M1
- $ {系統。 build.base}/P2/M2
等
然而,由於螞蟻> = 1.8.0這是不可能的了。原因是build-all.xml 中的 <property name="build.dir.base" location="${basedir}/build" />
優先於build.xml中的<property name="build.dir.base" location="${build.dir.base}/${name}" />
(爲項目構建)。因此,該項目「子模塊」的目的是在${system.build.base}/M1
而不是${system.build.base}/P2/M1
有,如果有些家長還定義了物業沒有辦法覆蓋一個屬性subant
。這是非常嚴重的,因爲構建應該知道父級用於某些不相關理由的屬性。
有沒有解決這種不兼容的行爲變化的解決方法?因爲,我的構建系統很大程度上依賴於<subant inheritAll="false" inheritRefs="false">
將執行exec而不污染子構建的事實。
雖然,我使用螞蟻多年,這是從我的交易斷路器。我還沒有考慮螞蟻代碼,看看是什麼原因呢,但是這樣做使得螞蟻不可能在更復雜的設置,然後單個項目的「Hello World」來使用它。我希望一些更嚴肅的維護者會接管螞蟻,如果apache.org想要保持它 – 2012-04-07 22:30:32