la création d'un fichier jar exécutable avec ant qui comprend le build.xml fichier
Je suis en train d'utiliser ant pour construire une application, exécutez l'application de la méthode main (), exécuter des tests junit et emballer le tout dans un fichier jar (source+construire+bibliothèques+build.xml). Les classes comprennent un coureur de classe avec une méthode main() point d'entrée.
L'objectif est d'suivants toutes les bibliothèques utilisées, comme junit.jar et la fourmi build.xml lui-même.
Je me demandais si il existe un moyen pour le fichier jar exécutable, pour exécuter des cibles sélectionnées du fichier ant itslef, au lieu de simplement la méthode main (). Évidemment, je n'aurais pas besoin de courir les cibles de compilation de nouveau, mais seulement la méthode main () (la java élément dans ma course à la cible) et la junit cible. Est-ce possible?
Merci beaucoup à l'avance pour le comprendre!
- denchr, ai-je répondu à votre question? Si non, préciser ce que vous essayez d'atteindre et je vais modifier ma réponse (ou quelqu'un d'autre ne le ferait un meilleur). Et si je l'ai fait, merci de voter pour ou accepter la réponse - comment DONC fonctionne et vous ne semblez pas être fait pour que la plupart de vos questions.
- Oui, vous avez réellement fait. Merci un tas. Permettez-moi d'accepter votre réponse, désolé.
Vous devez vous connecter pour publier un commentaire.
"Exécutable jar" n'est pas ce que vous pensez qu'elle est. Il vous permet de ranger tous votre classes confondues (vous pouvez ajouter une source à elle aussi même si je vois peu de point) et de déclarer une classe principale à l'aide de Principal attribut de Classe dans le pot manifeste. Les détails sont ici.
Vous pouvez ensuite lancer le bocal à l'aide de "
java -jar my.jar
" en ligne de commande qui s'appellemain()
méthode de la classe que vous avez spécifié. Vous pouvez également spécifier classpath viaClass-Path
attribut dans le fichier de manifeste qui peut pointer vers d'autres pots nécessaires à votre application. Que NE SIGNIFIE PAS ces pots sont archivés au sein de votre pot; en fait, si vous deviez le faire, la JVM ne sera pas en mesure de charger les classes à partir de ces pots à moins que vous preniez des précautions particulières et écrire un classloader personnalisé.