我有一個頂級螞蟻項目和它下面的許多子項目。螞蟻大項目。如何執行公共輸出目錄結構 - 包括,導入和inhertAll = false?
./build.xml
./datamodel_src/src/build.xml
./datamodel_src/src/module1/build.xml
./datamodel_src/src/module2/build.xml
./infrastructure_src/src/build.xml
./interfaces_src/src/build.xml
每個子項目,我想執行一個公共的輸出目錄結構。項目將有一個工作區域,每個子項目都有自己的工作區域。每個子項目都應在子項目的工作區域下創建工件(庫,文檔,類等)。
所以輸出會像
c:/sandbox/mainprojectworkarea/subprojectworkarea/lib
c:/sandbox/mainprojectworkarea/subprojectworkarea/docs
c:/sandbox/mainprojectworkarea/subprojectworkarea/classes
一些事目前我做如下。
頂層的build.xml就像下面
<project name="toplevelproject" default="compile" basedir=".">
<target name="compile">
<ant dir="infrastructure_src/src" />
<ant dir="interfaces_src/src " /> <!--does not work-->
<ant dir="datamodel_src/src inhertAll=false" /> <!--works-->
</target>
</project>
common.xml就像下面
<property environment="env" />
<property name="project.sandbox" value="${env.BUILD_HOME}/sandbox" />
<property name="sandbox" value="${project.sandbox}" />
<property name="pwa" value="${sandbox}/pwa" />
<property name="wa" value="${pwa}/${ant.project.name}" />
<property name="build" value="${wa}/build" />
<property name="lib" value="${wa}/lib" />
<property name="docs" value="${wa}/docs" />
<property name="exports" value="${wa}/exports" />
這是 「包含」 到所有項目。例如, 「datamodel_src/src目錄/ build.xml文件」 就像下面
<!DOCTYPE project [
<!ENTITY common SYSTEM "../../common.xml">
]>
<project name="dmodel" default="compile" basedir=".">
&common;
<target name="compile">
<echo message="will create lib in ${lib}"/>
<echo message="will create docs in ${docs}"/>
<ant dir="module1" inheritAll="false"/> <!--works fine-->
<ant dir="module2" /> <!--does not work -->
</target>
</project>
這工作時,我設置inhertiAll = false爲螞蟻電話。
是否有更好更正確的方法?
從凱文擴展到這個問題的答案。使用進口 的common.xml成爲一個真正的項目像下面
<project name="toplevelproject" default="compile" basedir=".">
<property name="toplevel" value="settotrue"/>
<target name="compile">
<ant dir="infrastructure_src/src" />
<ant dir="interfaces_src/src" />
<ant dir="datamodel_src/src" />
</target>
</project>
的「datamodel_src/src目錄/ build.xml文件」現在有些人認爲像下面。
<project name="dmodel" default="compile" basedir=".">
<import file="../../common.xml" />
<target name="compile">
<echo message="will create classes in ${build}"/>
<echo message="will create lib in ${lib}"/>
<ant dir="module1" inheritAll="false"/> <!--works fine-->
<ant dir="module2" /> <!--does not work -->
</target>
</project>
導入提供了選項,以具有共同的目標等,因此我會去用它。
謝謝。無論如何,「inheritAll」必須是假的。那是對的嗎? – Jayan 2011-02-19 16:31:57