2010-08-26 105 views
1

我們使用Ant構建Java Web應用程序。該應用程序將在Tomcat 6和Tomcat 5.5上編譯和運行。但是,構建過程稍有不同,具體取決於您安裝的Tomcat版本:5.5保留構建需要的jar文件$ CATALINA_HOME/common/lib$ CATALINA_HOME/server/lib,而6.0則保留它們全部在$ CATALINA_HOME/lib使Ant在不同情況下使用不同的構建類?

如何設置Ant以根據build.properties中的設置選擇正確的類路徑?我甚至可以在build.properties的設置中列出要包含在類路徑中的目錄,但是我一直無法完成這項工作。

有什麼建議嗎?

回答

4

創建2個不同的路徑項目:

<path id="path.tomcat55"> 
    <fileset ... (tomcat5.5 files) /> 
</path> 

<path id="path.tomcat6"> 
    <fileset ... (tomcat6 files) /> 
</path> 

然後建立了55,使用tomcat55路徑創建單獨的目標,另一個是使用的tomcat6建設6。

<target name="compile.tomcat55" depends="build"> 
    <echo message="Compiling for Tomcat 5.5" /> 
    <javac srcdir="${project.basedir}/src/test" destdir="${build.dir}" fork="true" source="1.5" classpathref="path.tomcat55" /> 
</target> 

<target name="compile.tomcat6" depends="build"> 
    <echo message="Compiling for Tomcat 6" /> 
    <javac srcdir="${project.basedir}/src/test" destdir="${build.dir}" fork="true" source="1.5" classpathref="path.tomcat6" /> 
</target> 

然後,只需調用適當的目標。

+0

謝謝,這可能是我必須這樣做的方式。我希望最終只有一個編譯目標,但至少這應該起作用。 – fizban 2010-08-27 10:55:22

2

由於目錄結構爲Tomcat 5.5和Tomcat 6.0相互排斥的,您可以指定它們的所有3,然後螞蟻會拿起唯一有什麼可用的:

<classpath> 
    <fileset dir="${catalina.home}/lib" 
    erroronmissingdir="false" 
    > 
    <include name="**/*.jar"/> 
    </fileset> 
    <fileset dir="${catalina.home}/common/lib" 
    erroronmissingdir="false" 
    > 
    <include name="**/*.jar"/> 
    </fileset> 
    <fileset dir="${catalina.home}/server/lib" 
    erroronmissingdir="false" 
    > 
    <include name="**/*.jar"/> 
    </fileset> 
</classpath> 

指定erroronmissingdir="false",所以螞蟻不會抱怨丟失的目錄。

+0

這似乎並不適用於我,螞蟻(或javac)抱怨缺少的目錄。 – fizban 2010-08-27 10:53:19

+0

@fizban:添加'erroronmissingdir'參數。 – 2010-08-27 11:49:33

0

我會去一個更簡單的解決方案。只需在構建路徑中添加3個目錄即可。如果找不到類路徑元素,Ant/javac應該忽略它。

相關問題