2010-03-29 6 views
4

J'utilise l'attribut classpath dans les tâches Ant personnalisées pour indiquer à Ant où trouver le fichier jar externe, mais comment faire la même chose pour les tâches intégrées?Spécification du chemin de classe pour les tâches Ant intégrées

Dans mon cas, je voudrais m'assurer que fourmi utilise ma copie de jsch.jar pour la tâche scp, et pas celle que je suis déjà installé sur le système. Est-il possible que je peux <scp> tout en garantissant qu'il utilise mon jsch.jar?

Répondre

1

Si votre appel fourmi utilise $ANT_HOME, vous pouvez utiliser juste pour cette fourmi appeler une valeur ANT_HOME spéciale à une installation personnalisée fourmi, où vous assurer que votre $ANT_HOME/lib contient la bonne copie de ant-jsch.jar.
Voir ce SO question pour plus d'informations.

1

Je pense que la meilleure façon de le faire est de définir votre propre tâche au lieu de jouer avec des tâches prédéfinies.

<taskdef name="myscp" class="..." classpath="jsch.jar"/> 

<myscp .../> 
+0

remerciements pour la idée. Je suppose que je ne suis pas sûr de ce qui irait dans le corps de la tâche ''. –

+0

Prenons un peu de recul. Vous avez mentionné que jsch.jar est déjà installé sur le système. Comment est-il installé? –

+0

Je veux mettre jsch.jar dans mon projet (ce qui signifie une URL relative arbitraire au build.xml) au lieu de le placer dans/usr/share/ant/lib ou le chemin ant dans mon répertoire personnel. –

1

J'ai eu le même problème exact et voici ce que je fait: utiliser Google Jar Jar pour changer les noms de paquets. Voici le build.xml i utilisé:

<project name="Admin WAS Jython" default="jar"> 
<target name="jar" > 
    <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" 
     classpath="jarjar-1.0.jar"/> 
    <jarjar jarfile="dist/ant-jsch-copy.jar"> 
     <zipfileset src="ant-jsch.jar"/> 
     <rule pattern="org.apache.tools.ant.taskdefs.optional.ssh.**" result="[email protected]"/> 
    </jarjar> 
</target> 

Ensuite, dans votre projet de fourmi utiliser les éléments suivants:

<taskdef name="scp2" 
classname="org.apache.tools.ant.taskdefs.optional.ssh.copy.Scp" 
classpath="ant-jsch-copy.jar;jsch-0.1.43.jar"/> 

et utiliser la tâche scp2 au lieu de scp

Questions connexes