J'ai un projet Java Eclipse. Il contient un dossier nommé "dist". Dans ce dossier se trouve un fichier .jar.
Comment puis-je configurer les choses dans ce projet pour m'assurer que ce fichier .jar est mis à jour chaque fois qu'un des fichiers .Java du projet a été recompilé?
Merci.
Créez un fichier Ant et dites à Eclipse de le construire. Il n’ya que deux étapes et chacune est simple grâce aux instructions détaillées ci-dessous.
Étape 1 Créez un fichier build.xml et ajoutez-le à l'Explorateur de packages:
<?xml version="1.0" ?>
<!-- Configuration of the Ant build system to generate a Jar file -->
<project name="TestMain" default="CreateJar">
<target name="CreateJar" description="Create Jar file">
<jar jarfile="Test.jar" basedir="." includes="*.class" />
</target>
</project>
Eclipse devrait ressembler à la capture d'écran ci-dessous. Notez l’icône Ant sur build.xml .
Étape 2 Cliquez avec le bouton droit de la souris sur le nœud racine dans le projet . - Sélectionnez Propriétés - Sélectionnez les constructeurs - Sélectionnez Nouveau - Sélectionnez Ant Build - Dans l'onglet Principal, indiquez le chemin du fichier build.xml dans le dossier bin .
Vérifiez la sortie
La fenêtre de sortie Eclipse (nommée Console) devrait afficher ce qui suit après une construction:
Buildfile: /home/<user>/src/Test/build.xml
CreateJar:
[jar] Building jar: /home/<user>/src/Test/Test.jar
BUILD SUCCESSFUL
Total time: 152 milliseconds
Vous pouvez définir un générateur Ant qui exécute une tâche jar pour analyser tous les fichiers de classe du projet (Avec "Refresh project upon completion
" défini.)
(Voir aussi " Personnalisation des builds pour vos projets Eclipse ")
Voir l'article IBM: Comment et pourquoi créer des tâches Ant personnalisées
Un modèle courant consiste à travailler avec les fichiers de classe du projet (les projets peuvent être ajoutés à d'autres chemins de construction de projets et utilisés lors de l'exécution du test), de sorte que vous n'avez pas réellement besoin des fichiers jar lors du développement.
L'approche générale pour l'ajout d'une étape de construction automatique consiste à écrire un script ant, à l'inclure dans votre projet et à inclure ensuite l'exécution de votre script ant dans la construction du projet. Donc, comme ant a une tâche assez simple de création de bocaux, cela ne demande pas trop d’efforts si vous avez besoin du fichier jar tout le temps. Voir pour un démarreur.
Créez un projet d’utilitaire J2EE (Util). Il vous permet de créer une association avec un projet J2EE (ProjectX). Lorsque vous modifiez les propriétés de ProjectX pour qu'elles dépendent du projet Util, il affiche Util en tant que Util.jar. Avec la dépendance déclarée, Eclipse construira le fichier Util.jar lorsqu’il devra construire le projet Util. Si la création automatique est active pour le projet Util, le fichier .jar sera synchronisé à chaque construction du projet. Si votre projet cible n'est pas un projet J2EE, vous pouvez toujours utiliser cette solution mais utiliser un projet parent factice J2EE.
Voici le lien vers la page d'aide pour l'utilisation de la tâche ANT pour la création d'un fichier .Zip à partir d'Eclipse: http://help.Eclipse.org/galileo/index.jsp?topic=/org.Eclipse.pde. doc.user/tasks/pde_feature_generating_ant.htm
Une autre solution consiste à utiliser le plugin Zip. Nous l'avons utilisé il y a plus de 5 ans, mais nous avons cessé lorsque WSAD a pris en charge les projets dépendants sous forme de fichiers .jar.
La réponse de Thomas fonctionne, mais le fichier jar qu'il génère n'est pas celui que vous pouvez utiliser pour exécuter l'application.
J'ai fini avec:
<?xml version="1.0" ?>
<!-- Configuration of the Ant build system to generate a Jar file -->
<project name="TDSz Data Mover" default="CreateJar">
<target name="CreateJar" description="Create Jar file">
<delete file="DataMover.jar"/>
<jar jarfile="DataMover.jar" basedir="bin/" includes="**/*.class **/Messages*.*" " update="no">
<zipfileset dir="D:/Java/mylib" erroronmissingarchive="true">
<include name="*.jar" />
</zipfileset>
<manifest>
<attribute name="Main-Class" value="some.package.and.app"/>
</manifest>
</jar>
</target>
</project>
Je ne sais pas si quelque chose a changé chez ant depuis que cette réponse a été donnée, mais il a fallu creuser pour que cela fonctionne réellement. Beaucoup de solutions dans les tutoriels n'étaient que des réponses partielles ...
Principaux changements:
Netbeans rend cela beaucoup plus facile - il suffit de cocher quelques cases.
[Modifié pour résoudre le problème avec la balise jar mal terminée et extraire les fichiers .jar]