2010-08-26 74 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应该忽略它。

相关问题