windu.2b Posté(e) le 26 avril 2007 Partager Posté(e) le 26 avril 2007 Bonsoir, Je travaille actuellement sur un projet en Java (je bosse avec Eclipse) et j'utilise Ant pour automatiser certaines tâches. Et justement, il y en a une que je n'arrive pas à automatiser: je désire faire une target 'dist' un peu particulière. Elle devra créer un jar avec les packages et les classes (compilés préalablement via une autre target, qui fonctionne très bien) que je veux (en précisant au sein de la target je suppose). Le but étant de faire un jar pour mon serveur, un autre pour mon client... Avec chacun une classe de lancement du jar différente. Car pour le moment, ma target 'dist' crée un jar en mettant la totalité des packages compilés. Lien vers le commentaire Partager sur d’autres sites More sharing options...
beuhbeuh Posté(e) le 27 avril 2007 Partager Posté(e) le 27 avril 2007 va voir la doc de Ant, tout est bien expliqué dedans dans ta tache jar, il y a moyen de préciser un fileset, avec des <include /> <exclude />. <!--Exemple 1 : inclure dans un jar seulement les fichiers d'un certain dossier (les classes du serveur) --> <jar destfile="${build}/serveur.jar"> <fileset dir="${src}/classes/server"> <include = "**/*" /> </fileset> </jar> <!--Exemple2 : exclure du jar tous les fichiers .test --> <jar destfile="${build}/serveur.jar"> <fileset dir="${src}/classes/server"> <include = "**/*" /> <exclude = "**/*.test" /> </fileset> </jar> Tu n'as qu'à créer une target distclient, une target distserveur, appeller les 2 et voilà... J'ai pas essayé de le lancer, donc je ne promet pas que cela marche as is, vérifie avec la doc qu'il n'y ai pas d'erreurs de syntaxe, etc... Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 27 avril 2007 Auteur Partager Posté(e) le 27 avril 2007 oki, je teste ça et je te dis si c'est bon... Lien vers le commentaire Partager sur d’autres sites More sharing options...
savory Posté(e) le 28 avril 2007 Partager Posté(e) le 28 avril 2007 Bon c'est un peu du déterrage de post vieux de 2 ans, mais je me suis souvenu d'un exemple de script ant avec plusieures target et des examples d'excludes de packages, que j'avais posté ici. Ça pourra peut être t'aider ... http://www.pcinpact.com/forum/index.php?s=...st&p=984074 Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 29 avril 2007 Auteur Partager Posté(e) le 29 avril 2007 bon, merci pour vos liens, ca m'a bien fait avancer! Cependant, j'ai encore un problème. voici déjà à quoi ressemble ma target: <target name="distClient" depends="compile" description="Génère le fichier jar pour le client"> <!-- Effacer les Jar --> <delete file="${pongClient}" /> <!-- On crée l'archive .jar concernant le client --> <jar destfile="${pongClient}"> <!-- Fichiers à inclure dans l'archive --> <fileset dir="${classes.dir}/${pong.directory.root}/client"> <include name="**/*.class" /> </fileset> <fileset dir="${classes.dir}/${pong.directory.root}/common"> <include name="**/*.class" /> </fileset> <fileset dir="${classes.dir}" includes="**/*.properties" /> <manifest> <!-- Classe à appeler lors de l'exécution du Jar --> <attribute name="Main-Class" value="${pong.packages.root}.client.Main" /> <attribute name="Built-By" value="windu.2b"/> </manifest> </jar> </target> Elle fonctionne presque comme il faut... La seul défaut est que les classes venant des packages '${pong.directory.root}/common' et '${pong.directory.root}/client' se retrouvent dans le jar (jusque là, ca va) mais pas comme il faudrait! En effet, elles sont à la racine du jar, au lieu d'être dans le package dont le nom correspond ${pong.packages.root} Donc, comment "rediriger" mes .class vers un répertoire/package (au sein de mon jar) bien précis? Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 29 avril 2007 Auteur Partager Posté(e) le 29 avril 2007 Un autre problème que je rencontre: Comment inclure les .jar (se situant dans le répertoire lib/) dans le .jar que je construis, mais tout en respectant l'arborescence (c'est à dire les mettre dans un dosier lib/ dans le .jar et non à la racine)? Et aussi, comment préciser au .jar de se servir d'eux pour le classpath? Car pour le moment, je suis encore obligé d'avoir les .jar à côté Edit: pour le coup des .jar dans mon .jar, je retire ce que j'ai dit! À la réflexion, c'est une connerie de vouloir faire ça... Du coup, j'ai plus besoin de modifier le Class-Path pour faire appel à mes .jar en interne Et pour l'arborescence des mes .class, j'ai réussi! En fait, je dis que je prends toute mes classes, et j'exclus les packages que je ne veux pas (avant, je faisais l'inverse: je ne prenais que ceux que je voulais) Bref, c'est résolu Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.