Créer automatiquement un projet dans un JAR dans Eclipse


171

J'ai un projet Eclipse dans lequel je souhaite conserver automatiquement mon projet Java intégré dans un JAR. Je sais que j'ai la possibilité d'exporter le projet dans un JAR; si je fais un clic droit; mais ce que je recherche vraiment, c'est que, comme Eclipse, crée automatiquement les .classfichiers d' un projet et les place dans le dossier cible; il doit également créer automatiquement un JAR et copier le dernier JAR à un endroit ou à un emplacement spécifique.

Existe-t-il une option pour configurer Eclipse de manière à créer automatiquement des JAR?

Juste pour que ce soit clair pour les gars, assez patient pour répondre à ma question; Je ne considère pas ANT comme une solution; car je l'utilise déjà, mais ce que je voudrais, c'est quelque chose qui s'initie automatiquement soit avec un déclencheur basé sur le temps, soit avec une construction immédiate avec changement.


1
Mon opinion personnelle: utilisez m2e, l'intégration maven d'Eclipse, afin qu'elle génère un fichier jar pour vous dans le cadre de la construction. J'ai récemment essayé d'utiliser Eclipse sans Maven et je ne peux pas croire à quel point le constructeur Java de base est primitif.
Craig Ringer

1
Pour 2018, utilisez un outil de construction au lieu de fonctionnalités spécifiques à l'IDE. Maven vous achète l'indépendance IDE et le support de la ligne de commande.
Thorbjørn Ravn Andersen

@Craig Ringer - y a-t-il un lien pour savoir comment faire cela?
nsandersen

Réponses:


27

Découvrez Apache Ant

Il est possible d'utiliser Ant pour les builds automatiques avec éclipse, voici comment


J'utilise déjà Apache ant pour faire les builds et faire Jar. Mais ce que je cherchais vraiment, c'était un moyen de contourner Apache Ant et d'utiliser directement eclipse.
Priyank

Désolé, je n'ai pas parcouru l'article en lien plus tôt. Il parle en effet de ce dont j'ai besoin. Merci.
Priyank

1
La réponse de Konrad correspond davantage à ce que recherchait l'OP.
lycono

lycono, je ne suis pas d'accord - l'OP voulait que le jar soit tenu à jour, et l'exportation d'un fichier jar n'essaie pas de résoudre ce problème.
James Moore

1
En juillet 2011, l'article référencé par @Peter ne décrit pas du tout comment créer un fichier jar.
James Moore

288

Vous voulez un .jardescfichier. Ils ne démarrent pas automatiquement, mais c'est à moins de 2 clics.

  1. Faites un clic droit sur votre projet
  2. Choisir Export > Java > JAR file
  3. Choisissez les fichiers inclus et nommez le JAR de sortie, puis cliquez sur Next
  4. Cochez "Enregistrer la description de ce JAR dans l'espace de travail" et choisissez un nom pour le nouveau .jardescfichier

Il ne vous reste plus qu'à faire un clic droit sur votre .jardescfichier et à choisir Create JARet il l'exportera au même endroit.


Triste que cette réponse n'ait pas reçu plus de votes positifs (ou meilleure réponse) il y a des mois. Eh bien, maintenant Konrad est parti.
Dan Rosenstark

25
Dans Eclipse Galileo, j'ai dû remplacer votre étape 1 par Fichier -> Exporter -> Java -> fichier JAR.
Matt Huggins

9
Existe-t-il un moyen d'automatiser l'étape «clic droit -> Créer un JAR»?
Asaf

4
Existe-t-il un moyen d'automatiser l'étape «clic droit -> Créer un JAR» ou de la lier à une combinaison de touches?
Pacerier

5
J'utilise "Exporter ... -> Java -> Fichier JAR exécutable" pour créer exactement cela.
TedTrippin

70

Créez un fichier Ant et dites à Eclipse de le construire. Il n'y a que deux étapes et chacune est facile avec les instructions étape par étape 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. Build.xml dans le projet Eclipse

Étape 2 Cliquez avec le bouton droit de la souris sur le nœud racine du projet. - Sélectionnez Propriétés - Sélectionnez Constructeurs - Sélectionnez Nouveau - Sélectionnez Ant Build - Dans l'onglet Principal, complétez le chemin d'accès au fichier build.xml dans le dossier bin .

Configuration du constructeur de fourmis Étape de construction - Onglet Cibles

Vérifiez la sortie

La fenêtre de sortie Eclipse (nommée Console) doit afficher les éléments suivants 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

EDIT: Quelques commentaires utiles de @yeoman et @betlista

@yeoman Je pense que l'inclusion correcte serait /.class, pas * .class, car la plupart des gens utilisent des packages et donc la recherche récursive de fichiers de classe a plus de sens qu'une inclusion plate

@betlista Je recommande de ne pas avoir build.xml dans le dossier src


2
Oui, vous pouvez choisir les cibles pour l'étape de construction comme suit: après un nettoyage, une construction manuelle, une construction automatique et pendant un nettoyage. La construction automatique devrait vous donner ce que vous voulez :)
Thomas Bratt

8
Après avoir essayé les deux, cette solution semble bien meilleure que celle de Konrad. Il vous oblige à trouver manuellement certains chemins dans votre fichier de construction mais il permet la construction automatique (au lieu de 2 clics) et permet une personnalisation facile (copiez le fichier jar après la construction par exemple). Voici comment créer un fichier jar lorsque le fichier de construction est à la racine et que plusieurs niveaux de packages sont imbriqués:<jar jarfile="dist/mypackage.jar" basedir="bin/" includes="**/*.class" />
worldsayshi

3
+1 Comment n'est-ce pas la réponse acceptée et même pas la plus votée?
Juan Garcia

2
Merci beaucoup. Je recommande de ne pas avoir build.xmldans le dossier src, mais le reste fonctionne très bien, incroyable!
Betlista

1
Je pense que l'inclusion correcte serait / .class, pas * .class, car la plupart des gens utilisent des packages et donc la recherche récursive de fichiers de classe a plus de sens qu'une inclusion plate. Enlèvera mon +1 jusque-là car la réponse ne fonctionne généralement pas telle quelle.
yeoman

13

Ceci est possible en définissant un Builder personnalisé dans eclipse (voir le lien dans la réponse de Peter). Cependant, à moins que votre projet ne soit très petit, il peut ralentir votre espace de travail de manière inacceptable. La création automatique des fichiers de classe s'effectue de manière incrémentielle, c'est-à-dire que seules les classes affectées par un changement sont recompilées, mais le fichier JAR devra être reconstruit et copié complètement à chaque fois que vous enregistrez un changement.



1

En utilisant la réponse de Thomas Bratt ci-dessus, assurez-vous simplement que votre build.xml est correctement configuré:

<?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="bin/" includes="**/*.class" />
  </target>
</project>

(Notez le double astérisque - il indiquera à build de rechercher les fichiers .class dans tous les sous-répertoires.)


0

La création d'un lanceur de générateur est un problème car 2 projets ne peuvent pas avoir le même nom de construction d'outil externe. Chaque nom doit être unique. Je suis actuellement confronté à ce problème pour automatiser ma compilation et copier le JAR vers un emplacement externe.

J'utilise Zip Builder d'IBM, mais ce n'est qu'une aide, mais je ne fais pas le vrai.

Les gens peuvent essayer d'utiliser le plugin IBM ZIP Creation. http://www.ibm.com/developerworks/websphere/library/techarticles/0112_deboer/deboer2.html#download

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.