2010-08-26 2 views
1

Nous utilisons Ant pour construire une application web Java. L'application compilera et fonctionnera sur Tomcat 6 et Tomcat 5.5. Toutefois, le processus de construction est légèrement différent selon la version de Tomcat installée: 5.5 conserve les fichiers jar dont la construction a besoin dans $ CATALINA_HOME/common/lib et $ CATALINA_HOME/server/lib, tandis que 6.0 les conserve tous dans $ CATALINA_HOME/lib.Faire Ant utiliser une classe de construction différente dans des situations différentes?

Comment puis-je configurer Ant pour choisir le (s) chemin (s) de classe correct (s) en fonction d'un paramètre dans build.properties? Je serais d'accord pour avoir même besoin de lister les répertoires à inclure dans le classpath dans un paramètre dans build.properties, mais je n'ai pas réussi à faire fonctionner ça.

Des suggestions?

Répondre

4

Créer 2 différents éléments de chemin:

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

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

Ensuite, créez des objectifs distincts pour la construction de 55, en utilisant le chemin de tomcat55 et un autre pour la construction de 6 à l'aide tomcat6.

<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> 

Appelez ensuite la cible appropriée.

+0

Merci, c'est peut-être comme ça que je dois le faire. J'espérais finir avec une seule cible de compilation, mais au moins cela devrait fonctionner. – fizban

2

Parce que la structure des répertoires est mutuellement exclusif pour Tomcat 5.5 et Tomcat 6.0, vous pouvez être en mesure de préciser tous les trois d'entre eux et fourmi ramassera que ce qui est disponible:

<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> 

Spécifiez erroronmissingdir="false", si fourmi ne se plaint pas des répertoires manquants.

+0

Cela ne semble pas fonctionner pour moi, ant (ou javac) se plaint des répertoires manquants. – fizban

+0

@fizban: ajoute l'argument 'erroronmissingdir'. –

0

Je voudrais aller à une solution plus simple. Ajoutez simplement les 3 répertoires dans le chemin de compilation. Ant/javac doit ignorer si un élément classpath est introuvable.

Questions connexes