【问题标题】:Make Ant use a different build class in different situations?让 Ant 在不同情况下使用不同的构建类?
【发布时间】:2010-08-26 18:07:10
【问题描述】:

我们使用 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 以根据 build.properties 中的设置选择正确的类路径?我什至可以在 build.properties 的设置中列出要包含在类路径中的目录,但我无法完成这项工作。

有什么建议吗?

【问题讨论】:

    标签: java tomcat ant


    【解决方案1】:

    创建 2 个不同的路径项:

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

    然后使用 tomcat55 路径为构建 55 创建单独的目标,使用 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>
    

    然后,只需调用适当的目标。

    【讨论】:

    • 谢谢,这可能是我必须这样做的方式。我希望最终只有一个编译目标,但至少这应该可行。
    【解决方案2】:

    因为 Tomcat 5.5 和 Tomcat 6.0 的目录结构是互斥的,所以您可以指定所有 3 个目录结构,然后 ant 将只选择可用的:

    <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",这样ant就不会抱怨缺少目录。

    【讨论】:

    • 这似乎对我不起作用,ant(或 javac)抱怨缺少目录。
    【解决方案3】:

    我会采用更简单的解决方案。只需在构建路径中添加 3 个目录即可。如果找不到类路径元素,Ant/javac 应该忽略。

    【讨论】:

      猜你喜欢
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      相关资源
      最近更新 更多