Comment puis-je fournir une coutume log4j.xml pour les différentes tâches ant?

J'ai un fichier de build que, dans le cadre du processus de construction s'appuie sur plusieurs taskdefs. Ces taskdef des éléments (par exemple, webdoclet et jasper2) utiliser log4j comme un bûcheron. Idéalement, je voudrais être en mesure de fournir un autre fichier de configuration log4j pour chaque, mais très peu, je voudrais être en mesure de spécifier le fichier de configuration log4j est utilisé.

Ce que j'ai fait que l'habitude de travailler était de mettre à l'avant du chemin de classe le répertoire contenant le log4j.xml que je voulais le taskdef à utiliser. Par exemple:

<nom de la cible="définir.jasper2"> 
<path id="jspc.classpath"> 
<!-- Mettre cela en PREMIER afin de Jasper trouverez l'log4j.xml dans le répertoire de compilation --> 
<pathelement emplacement="Build"/> 
<fileset dir="${tomcat.libs}"> 
.... 
</fileset> 
<pathelement location="${log4j.jar}"/> 
.... 
</path> 

<taskdef name="jasper2" classname="org.apache.jasper.JspC" classpathref="jspc.classpath"/> 
</target> 

J'ai vérifié que, en fait, le "Construire" le répertoire est à l'avant du classpath et qu'un log4j.xml il existe dans ce répertoire. Cependant, lorsque je lance ant en mode verbose avec log4j dans le debug, je vois que log4j est de choisir le log4j.xml c'est dans le répertoire de travail courant, ce qui n'est pas celui que je veux. Log4j semble pas être à l'aide de la variable classpath pour résoudre le défaut log4j.xml.

Je suis en utilisant log4j 1.2.8 (incorporé à l'intérieur d'un cadre plus large, donc je ne peux pas le mettre à niveau) et certains de ces taskdefs semblent reposer sur commons-logging 1.0.3. Le processus de construction des usages Sun Java 5.

Si je set ANT_OPTS=-Dlog4j.configuration=Build/log4j.xml avant l'exécution de la fourmi, la taskdefs charge correctement désiré log4j.xml.

Mettre la "construction" de répertoire à l'avant du chemin de la taskdefs l'habitude de travailler. Je ne sais pas ce qui a changé. Comment puis-je restaurer le comportement où je peux contrôler, dans le cadre des build.xml -- fichier de configuration log4j est utilisé pour une tâche donnée? Est-il un moyen autre que de fixer ANT_OPTS et autres que la réorganisation des fichiers à déplacer l'application du log4j.xml hors du répertoire de travail actuel pour obtenir log4j pour trouver la bonne log4j.xml fichier?

OriginalL'auteur Eddie | 2009-01-26