web-dev-qa-db-fra.com

Comment construire correctement des pots d'IntelliJ?

J'ai un projet qui contient un seul module et quelques dépendances .. Je voudrais créer un jar, dans un répertoire séparé, contenant le module compilé. De plus, j'aimerais avoir les dépendances présentes à côté de mon module.

Peu importe la façon dont je modifie le processus "build jar" d'IntelliJ, la sortie de mon module apparaît vide (à part un fichier META-INF).

393
ripper234

Voici comment construire un pot avec IntelliJ 10 http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/

Fichier -> Structure du projet -> Paramètres du projet -> Artefacts -> Cliquez sur le signe plus vert -> Jar -> À partir de modules avec dépendances ...

Ce qui précède définit le "squelette" sur l'endroit où le pot sera sauvegardé. Pour le construire et le sauvegarder, procédez comme suit: 

Extraire dans le pot cible

D'accord

Construire | Construire un artefact

464
simao

C'est toujours un problème en 2017, j'espère que cela aidera quelqu'un là-bas! J'ai trouvé 2 possibilités pour créer des jar-s de travail sous IntelliJ 2017.2

1. Création d'un artefact à partir d'IntelliJ:

  • Aller à la structure du projet:

 File menu

  • Créer un nouvel artefact:

 Create a new artifact

  • Sélectionnez la classe principale et veillez à modifier le dossier manifeste:

 enter image description here

Vous devez changer le répertoire manifeste:

<project folder>\src\main\Java 

remplacer "Java" par "ressources"

<project folder>\src\main\resources

Voici à quoi cela devrait ressembler:

 correct way for new manifest

  • Ensuite, vous choisissez les dépendances avec ce que vous voulez insérer dans votre jarre ou près de votre fichier jar

  • Pour construire votre artefact, créez des artefacts et choisissez "reconstruire". Il créera un dossier "out" avec votre fichier jar et ses dépendances.

 enter image description here

2. Utilisation de maven-Assembly-plugin

Ajouter une section de construction au fichier pom

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-Assembly-plugin</artifactId>
                <configuration>
                    <finalName>ServiceCreate</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <archive>
                        <manifest>
                            <mainClass>com.svt.optimoo.App</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • Créez une nouvelle configuration d'exécution/débogage:

 Create a new run/debug configuration:

  • Choisissez une application:

 Choose application

  • Remplissez le formulaire
  • Ajouter l'objectif "assembleur: unique" après la dernière construction à exécuter

 enter image description here

 Final setup

  • Enregistrez-le, puis exécutez 

 enter image description here

Cette procédure créera le fichier jar sous le dossier "cible"

 JAR file location

135
Zsolt Tolvaly

J'ai récemment eu ce problème et je pense que ces étapes sont faciles à suivre si une solution ou un lien précédent manque de détails.

Comment créer un .jar en utilisant IntelliJ IDEA 14.1.5:

  1. Fichier> Enregistrer tout.
  2. Exécutez le pilote ou la classe avec la méthode principale.
  3. Fichier> Structure du projet.
  4. Sélectionnez l'onglet "Artifacts".
  5. Cliquez sur le bouton plus vert en haut de la fenêtre.
  6. Sélectionnez JAR dans le menu déroulant Ajouter. Sélectionnez "À partir de modules avec dépendances"
  7. Sélectionnez la classe principale.
  8. Le bouton radio doit sélectionner "extraire dans le fichier JAR cible". Appuyer sur OK.
  9. Cochez la case "Build on make"
  10. Appuyez sur appliquer et sur OK.
  11. Dans le menu principal, sélectionnez le menu déroulant de génération.
  12. Sélectionnez l'option Créer des artefacts.
126
user5442490

Pour ceux qui bénéficient d'images comme moi:

Fichier -> Structure du projet 

 enter image description here

 enter image description here

 enter image description here

 enter image description here

27
Crt

Il est probablement un peu tardif, mais j’ai réussi à le résoudre de cette façon -> Ouvert avec winrar et supprimer ECLIPSEF.RSA et ECLIPSEF.SF dans le dossier META-INF, en ajoutant "Main-class: main_class_name" (sans .class ") dans MANIFEST.MF. Assurez-vous que vous avez appuyé sur "Entrée" deux fois après la dernière ligne, sinon cela ne fonctionnera pas.

5
jbakirov

Voici 2 exemples avec le projet maven, étape par étape:

Méthode 1: Construire un pot avec maven et pom.xml

  1. Fichier, nouveau, projet, maven
  2. créer un paquet, créer un programme Java à l'intérieur de ce paquet  enter image description here
  3. à pom.xml, ajoutez maven-jar-plugin.

        <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>somePackage.sample</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    

capture d'écran:  enter image description here 4. ouvrez la boîte de projet maven en cliquant sur l’icône de recherche et tapez maven,  enter image description here

  1. cliquez sur nettoyer, puis cliquez sur installer  enter image description here

  2. votre fichier jar apparaîtra dans le dossier cible  enter image description here

  3. testez votre jar en utilisant Java -jar 

 enter image description here

Méthode 2: génération d'un fichier jar avec maven sans modification de pom.xml

  1. Fichier, nouveau, projet, maven
  2. créer un paquet, créer un programme Java à l'intérieur de ce paquet (comme ci-dessus)
  3. Fichier -> Structure du projet -> Paramètres du projet -> Artefacts -> Cliquez sur le signe plus vert -> Jar -> À partir de modules avec dépendance

Très important!

MANIFEST.MF doit se trouver dans votre dossier de ressources et Main.Class doit faire référence à {package} - {nom-classe-qui-contient-classe-principale}

 enter image description here  enter image description here

  1. puis cliquez sur construire dans le menu, construire des artefacts, construire

 enter image description here

  1. trouver le pot dans le dossier de sortie

 enter image description here

  1. exécuter :)

 enter image description here

2
rrr

Idée 8.1.3

Jar est ok, puisqu'il y a une sortie compilée dans le répertoire 'output' (projet/sortie/production //)

Je suppose que vous devez exécuter 'make' avant de construire le bocal

pour les dépendances, cochez "show library" et choisissez ce que vous voulez.

1
Vugluskr

Vous voudrez peut-être jeter un coup d'œil à Maven ( http://maven.Apache.org ). Vous pouvez l'utiliser comme processus de construction principal de votre application ou simplement pour effectuer certaines tâches via la boîte de dialogue Modifier les configurations. Le processus de création d'un fichier JAR d'un module au sein de Maven est relativement simple si vous souhaitez inclure toutes les dépendances dans un fichier JAR auto-exécutable qui est également trivial.

Si vous n'avez jamais utilisé Maven, vous souhaitez lire Mieux construire avec Maven .

1
Gary Rowe

Avec Maven, vous pouvez utiliser ce plugin:

 <build>
    <plugins>

        <plugin>
            <artifactId>maven-Assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>[path you class main]</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-Assembly</id>
                    <phase>package</phase> 
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
1
fede beron

Mon problème était le suivant: j'ai utilisé Intellij IDEA (essayé différentes versions) + Gradle. Lorsque j'ai compilé le projet et créé le fichier artifacf, comme indiqué dans les réponses ci-dessus, j'ai reçu une erreur: "pas d'attrument manifeste du manifeste ..."

Cette solution a fonctionné pour moi (merci à Thilina Ashen Gamage (voir ci-dessus) pour le tuyau):

Extrait - si vous utilisez des bibliothèques externes et construisez un projet avec Paramètres du projet - Artefacts - Ajouter (+) - Jarre - À partir de modules avec dépendances , probablement à cause d'un bogue du programme, le dossier META-INF contenant le fichier MANIFEST_MF ne pas inclure à jar. Pour éviter cela, créez le fichierVIDEjar.

Paramètres du projet - Artefacts - Ajouter (+) - Jarre - EMPTY JAR . Le dossier META-INF sera ajouté au dossier resources . Ensuite, sélectionnez votre classe principale. Vous verrez la structure de jar suivante:  note the presence of a folder META-INF Notez la présence d'un dossier META-INF. Vous pouvez ensuite construire votre projet et créer des artefacts. Cette solution a également fonctionné pour les applications javaFX.

0
Orkhan Hasanli

Voici la réponse officielle de IntelliJ IDEA 2018.3 Aide . J'ai essayé et cela a fonctionné.

Construire un fichier JAR à partir d’un module;

  1. Dans le menu principal, choisissez Construire | Construire un artefact.

  2. Dans la liste déroulante, sélectionnez l'artefact souhaité du type JAR . La liste affiche tous les artefacts configurés pour le projet en cours. Pour que tous les artefacts configurés soient construits, choisissez l'option Tout construire option d'artefacts.

0
Sabri Meviş

Si vous essayez de créer un fichier jar avec kotlin, vous devez créer un dossier src/main/Java et utiliser ce dossier comme emplacement du dossier META-INF.

0
Chris

Quand j'utilise ces solutions cette erreur vient:

Java -jar xxxxx.jar

aucun attribut manifeste principal, dans xxxxx.jar

et la solution est:

Vous devez changer le répertoire manifeste:

<project folder>\src\main\Java 

changer Java en ressources

<project folder>\src\main\resources
0
Saeed

Certaines des autres réponses sont inutiles car dès que vous réimporterez le projet IntelliJ IDEA à partir du projet maven, tous les changements seront perdus.

La construction du fichier JAR doit être déclenchée par une configuration d'exécution/de débogage, et non par les paramètres du projet.

Jetbrains a une belle description de la façon dont vous pouvez accomplir cela ici:

https://www.jetbrains.com/help/idea/maven.html

Faites défiler jusqu'à la section intitulée "Configuration des déclencheurs pour les objectifs Maven".

(Le seul inconvénient de leur description est que leurs captures d'écran sont dans le jeu de couleurs noir sur blanc par défaut au lieu du thème super génial darcula. Ugh!)

Donc, en gros, vous ouvrez le panneau "Projets Maven", vous trouvez le projet qui vous intéresse (dans votre cas, le projet qui construit votre bocal), vous trouvez en dessous le but que vous souhaitez exécuter. , (habituellement l'objectif "package" crée des fichiers jar), vous ouvrez le menu contextuel (cliquez avec le bouton droit de la souris sur une machine Windows) et l'option "Exécuter avant d'exécuter/déboguer ..." est disponible sélectionnez et il vous prendra par la main à partir de là. Vraiment facile.

0
Mike Nakis

 enter image description here 

Comme le disent les personnes ci-dessus, mais je dois noter un point. Vous devez cocher la case:

Inclure dans la construction du projet

0
Benchur Wong

Si vous travaillez sur le projet spring/mvn, vous pouvez utiliser cette commande:

mvn package -DskipTests

Le fichier jar sera enregistré sur la cible cible.

0
Han Kai

Si vous utilisez des bibliothèques tierces avec votre projet ou si vous rencontrez des problèmes pour créer le fichier MANIFEST.MF correctement, des conflits peuvent survenir lors de l'exécution des fichiers JAR générés à l'aide de 

File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....

méthode mentionnée ci-dessus.

Au lieu de cela, je vous suggère de créer un fichier JAR vide et d’ajouter manuellement tous les autres éléments à la racine de sortie. Un article de blog merveilleux pour cette méthode peut être trouvé ici: http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/ J'ai essayé les étapes mentionnées ici et tout a bien fonctionné pour moi! 

0

J'essayais de construire un bocal à partir d'une application Kotlin multi-module et j'obtenais l'erreur notoire «aucun attribut manifeste principal». La création du répertoire manifeste dans src/main/resources ne fonctionnait pas non plus.

Au lieu de cela, cela fonctionne lors de la création directement dans src: src/META-INF/MANIFEST.MF.

 enter image description here

0
Tobias Uhmann