/ / Exécuter une compilation avec la version locale de ANT et JUNIT dans Weblogic - windows, unix, ant, junit, classpath

Exécutez ant build avec la version locale de ANT et JUNIT dans Weblogic - windows, unix, ant, junit, classpath

J'essaie d'utiliser un script Ant build.xml. Dans celui-ci, j'ai ajouté une tâche pour exécuter des tests Junit. Cependant, je rencontre des problèmes de classpath redoutés.

Parce que ceci est une application weblogic, Weblogicconfigure ANT_HOME avec la version ANT de Weblogic, qui est 1.6.5 De ​​plus, nous essayons d’utiliser JUnit 4, mais JUnit fourni avec Weblogic est basé sur JUnit 3 (je crois).

Je pensais que ce serait une chose simple à dire à Antd’utiliser les fichiers jar Ant et JUnit que j’ai enregistrés avec mon projet plutôt que de fonctionner avec la version Weblogic, mais j’ai été incapable de le faire fonctionner.

Voici ce que j'ai maintenant:

<path id="junit.classpath">
<fileset dir="${applib.dir}">
<include name="junit-4.10.jar"/>
</fileset>
</path>

<taskdef name="myjunit"
classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"
classpathref="junit.classpath">

<classpath>
<!-- These are here so that the junit task runs with these jars, which works -->
<pathelement location="${applib.dir}/junit-4.10.jar"/>
<pathelement location="${applib.dir}/ant-1.8.2/ant-junit4.jar"/>
</classpath>
</taskdef>

Cependant, peu importe ce que je fais, le chemin de classe Ant ne comprend pas JUnit / framework / Test:

BUILD FAILED
C:build.xml:219: taskdef A class needed by class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask cannot be found: j
unit/framework/Test

je pense le problème est que ANT_HOME est défini par Weblogic et donc ant-junit.jar est ajouté au chemin de classe lorsque Ant démarre. Le diagnostic de fourmi le confirme.

Le seul moyen que j’ai pu résoudre ce problème est de placer directement junit-4.10.jar dans le chemin de classe ou dans le répertoire de la bibliothèque BEA ANT_HOME. Toutefois, cela ne fonctionnera pas dans les environnements de production.

Alors - comment puis-je ajouter junit-4.10.jar au chemin de classe Ant pour que le taskdef ne provoque pas le crash d'Ant?

  • La tâche n'est utilisée que pour exécuter des tests JUnit pendant la génération de code, elle n'est pas nécessaire pour le déploiement.
  • Installer ANT et JUNIT sur toutes les machines qui utiliseront ce script n'est pas vraiment une option.
  • Plusieurs plates-formes (unix et windows) doivent pouvoir exécuter le même script de construction, Windows pour le code de construction et Linux pour le déploiement sur Weblogic.
  • Je ne veux vraiment pas avoir à fournir des fichiers JUnit et ANT dans des packages de production juste pour fermer Ant pendant la phase de déploiement alors qu'il ne va même pas exécuter la tâche en question.
  • Je pourrais avoir un fichier build.xml distinct juste pour compiler / exécuter le test junit, mais cela provoquera un code en double et ressemble à un kludge.

Quelqu'un a-t-il des suggestions sur la façon de résoudre ce problème?

Réponses:

1 pour la réponse № 1

Que diriez-vous d'un script wrapper par exemple Fichier batch DOS pour forcer un CHEMIN, comme:

set ANT_HOME=C:antant-1.8.2
set PATH=%PATH%;%ANT_HOME%bin
ant -f C:mybuild.xml...

Je sais que vous avez besoin d'un seul script fonctionnant pour Unix et Windows. Mais l'idée a-t-elle un sens ici?