Comment puis-je spécifier le chemin d'accès d'un POT dans un ant buildfile?
Je suis de l'exécution de beaucoup de scp
et sshexec
et d'autres commandes à distance à partir d'un script ant. Ces commandes ne fonctionnent pas si jsch.jar
n'est pas dans la fourmi lib
répertoire. Pour le faire fonctionner, j'ai copié le POT dans la fourmi lib
répertoire, mais ce n'est pas une bonne solution, comme n'importe qui d'autre qui veulent exécuter le script aurait à faire la même chose. Pour exécuter la cible ant de Teamcity, nous aurons à définir explicitement le chemin d'accès du fichier lib.
Est-il une manière que je peux spécifier le chemin du POT de l'ant XML lui-même?
Avez testé votre ant exemple de code? Je ne vois pas de raison pourquoi il ne devrait pas travailler. J'ai utiliser de la même façon pour d'autres tâches.
Je ne dis pas qu'il ne fonctionne pas, il fonctionne mais je dois ajouter l'jsch.jar dans la fourmi répertoire lib, je veux l'éviter. Toutes mes excuses si ma question n'est pas que correctement. Nous avons la tâche de cette { <scp todir="user1:pass1@server1:/tmp" confiance="true" > <fileset dir="dir1"> <include name="file.txt" /> </fileset> </scp> } Pour faire ce travail, j'ai du ajouter jsch.jar dans la fourmi lib manuellement. Puis-je l'éviter en mettant quelque chose dans le fichier build
L'extrait de code que vous avez supprimé fonctionne également si l'jsch.jar n'est pas dans le répertoire lib. Ensuite, vous devez assurez-vous de spécifier le bon chemin relatif ou absolu.
Je ne dis pas qu'il ne fonctionne pas, il fonctionne mais je dois ajouter l'jsch.jar dans la fourmi répertoire lib, je veux l'éviter. Toutes mes excuses si ma question n'est pas que correctement. Nous avons la tâche de cette { <scp todir="user1:pass1@server1:/tmp" confiance="true" > <fileset dir="dir1"> <include name="file.txt" /> </fileset> </scp> } Pour faire ce travail, j'ai du ajouter jsch.jar dans la fourmi lib manuellement. Puis-je l'éviter en mettant quelque chose dans le fichier build
L'extrait de code que vous avez supprimé fonctionne également si l'jsch.jar n'est pas dans le répertoire lib. Ensuite, vous devez assurez-vous de spécifier le bon chemin relatif ou absolu.
OriginalL'auteur Ravi | 2011-02-24
Vous devez vous connecter pour publier un commentaire.
Merci à tous pour vos réponses. Je suis d'réussi à le faire fonctionner avec le chargeur de classe de la tâche. C'est ce que j'ai fait.
Comme vous pouvez le voir ici, je n'avais pas à donner à toute personne à charge cible pour mon "Test" de la cible, il fonctionne, tout simplement. Il utilise des chargeurs de classes, qui ajoute jsch.jar le système de chargeur de classe.
taskdef être déclaré de nouveau, pour lequel j'ai dû enlever le ant-jsch.jar de répertoire lib et ajouter nw taskdef pour les scp et sshexec.
Cette solution a très bien fonctionné. Le chargeur de classe bocal et d'informations peuvent être trouvées à l'adresse enitsys.sourceforge.net/ant-classloadertask
OriginalL'auteur Ravi
Une manière de contourner ce problème serait d'utiliser la
-lib
option de ligne de commande à dire fourmi où regarder pour plus de pots. Vous pourriez peut-être créer un script qui appelleant
avec cette option.Une autre façon serait de déplacer la
ant-jsch.jar
fichier (c'est le pot qui vient avec la fourmi qui définit les tâches, pas la jsch.jar fichier vous devez télécharger séparément) de votre ant répertoire lib, et de créer untaskdef
ssh pour votre tâche séparée pour les construit dans l'un, puis à définir le classpath pour cette tâche à lajsch.jar
et laant-jsch.jar
:Je ne suis pas sûr que cela va vous aider à bien, puisqu'elle implique des changements dans le répertoire lib.
Autant que je sache, il n'est actuellement pas possible de préciser les pots supplémentaires requis pour les construit dans les tâches dans la construction de soi en général. Il existe quelques cas particuliers, comme junit par exemple.
Je ne veux pas apporter des modifications à la fourmi répertoire lib que je n'ai pas de contrôle sur elle. Cette option ne fonctionne pas dans ce scénario
OriginalL'auteur matt
Pour vous assurer que votre build est plus de la croix-plate-forme que je proposerais à l'aide de la gestion des dépendances. Le ivy plug-in permet d'installer automatiquement la version de votre version du plugin au moment de la construction.
Cette approche signifie que le dernier pot que vous aurez jamais besoin pour installer dans votre ANT lib est ivy-2.2.0.jar 🙂
D'abord déclarer votre projet dépendances dans le fichier ivy.xml
Au sein de votre build.xml exécuter le lierre et l'utiliser pour remplir une coutume classpath basé sur le lierre de configuration:
Enfin, ailleurs dans votre construction de déclarer vos tâches ANT à l'aide de la classe, désormais, le chemin est renseignée automatiquement par le lierre.
Cette approche fonctionne pour tous les ANT plugins, dont la plupart sont disponibles dans le central repository Maven. Le second avantage est qu'il est facile de mettre à niveau les versions de plug-in dans toutes les versions.
La caisse de la "classpathref" attribut sur le taskdef tâche. Il vous permet de spécifier le chemin de classe pour être utilisé lors de la déclaration de votre tâche. L'assistance ivy est la capacité de télécharger et remplir ce chemin de classe au moment de la construction. C'est ce que l'Maven build outil, tous les plugins sont téléchargés.
J'aime bien votre approche, mais encore une fois ici, chaque tâche devra appeler le init tâche première
depends="init"
. Je suis à la recherche de l'option qui ressemble plus à "changer une fois et le travail pour tous".L'initialisation tâche de téléchargement tous pots que vous spécifiez dans le lierre fichier. Vous déclarez ensuite les tâches immédiatement ou attendre jusqu'à ce que vous en avez besoin, comme dans mon exemple ci-dessus. Mon exemple ne contient qu'un seul de dépendance. Typique d'un projet de construction nécessiterait 10-30 pots, pas seulement pour les tâches, mais pour d'autres frameworks comme Spring et Hibernate. Merci de regarder la Maven build outil de un jour. Il va vous présenter de nouvelles idées sur la gestion des builds. Le lierre plug-in permet de vous appuyer ces mais gardez à l'aide de ANT comme votre principal outil de construction.
OriginalL'auteur Mark O'Connor