J'ai un projet qui contient un seul module et quelques dépendances. Je voudrais créer un pot, dans un répertoire séparé, qui contient le module compilé. De plus, j'aimerais avoir les dépendances à côté de mon module.
Peu importe comment je tord le processus "build jar" d'IntelliJ, la sortie de mon module semble vide (en plus d'un fichier META-INF).
la source
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 pots de travail sous IntelliJ 2017.2
1. Création d'artefact à partir d'IntelliJ:
Vous devez changer le répertoire du manifeste:
remplacer "java" par "resources"
Voici à quoi cela devrait ressembler:
Ensuite, vous choisissez les dépendances ce que vous voulez emballer dans votre pot, ou près de votre fichier pot
Pour construire votre artefact, allez à construire des artefacts et choisissez "reconstruire". Il créera un dossier "out" avec votre fichier jar et ses dépendances.
2. Utilisation du plugin maven-assembly-plugin
Ajouter une section de construction au fichier pom
Cette procédure créera le fichier jar sous le dossier "target"
la source
no main manifest attribute
adopter les solutions ci-dessus. Personne n'a mentionné avoir changé lepath to manifest
. Thnx !!J'ai récemment rencontré ce problème et je pense que ces étapes sont faciles à suivre si une solution ou un lien antérieur manque de détails.
Comment créer un
.jar
utilisant IntelliJ IDEA 14.1.5:la source
Pour ceux qui bénéficient des images comme moi:
File -> Project Structure
la source
Voici 2 exemples avec le projet maven, étape par étape:
Méthode 1: construire un pot avec maven et pom.xml
sur pom.xml, ajoutez maven-jar-plugin.
capture d'écran: 4. ouvrez la boîte de projet maven en cliquant sur l'icône de recherche et tapez maven,
cliquez sur nettoyer, puis cliquez sur installer
votre fichier jar apparaîtra dans le dossier cible
testez votre pot en utilisant java -jar
Méthode 2: créer un pot avec maven sans modification de pom.xml
Très important!
Le MANIFEST.MF doit se trouver dans votre dossier de ressources et le Main.Class doit faire référence à {package} - {class-name-that-contains-main-class}
la source
Il est probablement un peu tard, mais j'ai réussi à le résoudre de cette façon -> ouvrir avec winrar et supprimer ECLIPSEF.RSA et ECLIPSEF.SF dans le dossier META-INF, en plus mettre "Main-class: main_class_name" (sans ".class" ) dans MANIFEST.MF. Assurez-vous d'avoir appuyé deux fois sur "Entrée" après la dernière ligne, sinon cela ne fonctionnera pas.
la source
Lorsque j'utilise ces solutions, cette erreur arrive:
et la solution est :
Vous devez changer le répertoire du manifeste:
changer java en ressources
la source
J'essayais de construire un pot à 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
n'a pas fonctionné non plus.Au lieu de cela, il fonctionne lors de la création en
src
direct:src/META-INF/MANIFEST.MF
.la source
Comme le disent les gens ci-dessus, mais je dois noter un point. Vous devez cocher la case:
la source
Idée 8.1.3
Jar est ok, car il y a une sortie compilée dans le répertoire 'output' (project / out / production //)
Je suppose que vous devez exécuter «make» avant de construire le pot
pour les dépendances il suffit de cocher "afficher la bibliothèque" et de choisir ce que vous voulez.
la source
Avec Maven, vous pouvez utiliser ce plugin:
la source
Vous voudrez peut-être jeter un œil à Maven ( http://maven.apache.org ). Vous pouvez l'utiliser soit comme processus de construction principal de votre application, soit simplement pour effectuer certaines tâches via la boîte de dialogue Modifier les configurations. Le processus de création d'un JAR d'un module dans Maven est assez trivial, si vous voulez qu'il inclue toutes les dépendances dans un JAR auto-exécutable qui est également trivial.
Si vous n'avez jamais utilisé Maven auparavant, vous voulez lire Better Builds With Maven .
la source
Si vous utilisez des bibliothèques tierces avec votre projet ou si vous rencontrez des problèmes pour créer correctement le fichier MANIFEST.MF, il peut y avoir des conflits lors de l'exécution de fichiers JAR générés à l'aide de
méthode mentionnée ci-dessus.
Au lieu de cela, je vous suggère de créer un JAR vide et d'ajouter manuellement tous les autres éléments à la racine de sortie. Un merveilleux article de blog 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!
la source
Certaines des autres réponses sont inutiles car dès que vous réimportez le projet IntelliJ IDEA à partir du projet maven, toutes les modifications seront perdues.
La construction du bocal doit être déclenchée par une configuration d'exécution / 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 de Darcula. Ugh!)
Donc, en gros, ce que vous faites, c'est que vous ouvrez le panneau "Projets Maven", vous trouvez le projet qui vous intéresse, (dans votre cas, le projet qui construit votre pot), en dessous, vous trouvez l'objectif maven que vous voulez exécuter , (généralement l'objectif "package" crée des fichiers jars), vous ouvrez le menu contextuel sur celui-ci, (cliquez avec le bouton droit sur une machine Windows) et il y aura une option "Exécuter avant d'exécuter / déboguer ..." que vous pouvez sélectionnez et il vous prendra par la main à partir de là. Vraiment facile.
la source
Dans le cas où vous essayez de construire un pot avec kotlin, vous devez créer un
src/main/java
dossier et utiliser ce dossier comme emplacement pour le dossier META-INF.la source
Voici la réponse officielle de l' aide IntelliJ IDEA 2018.3 . J'ai essayé et ça a marché.
la source
Mon problème était le suivant: j'ai utilisé Intellij IDEA (essayé différentes versions) + Gradle. Quand j'ai compilé le projet et construit le pot artifacf, comme indiqué dans les réponses ci-dessus, j'ai reçu une erreur - "aucun manifeste principal attrubute ..."
Cette solution a fonctionné pour moi (merci à Thilina Ashen Gamage (voir ci-dessus) pour un conseil):
Extrait - si vous utilisez des bibliothèques externes et créez un projet via Paramètres du projet - Artefacts - Ajouter (+) - Pot - À partir de modules avec des dépendances , alors probablement en raison d'un bogue de programme, le dossier META-INF avec le fichier MANIFEST_MF ne comprend pas dans le bocal. Pour éviter cela, créez un fichier jar VIDE .
Paramètres du projet - Artefacts - Ajouter (+) - Jar - JAR VIDE . Le dossier META-INF sera ajouté au dossier des ressources . Sélectionnez ensuite votre classe principale. Vous verrez la structure du pot suivante: Notez la présence d'un dossier META-INF Ensuite, vous pouvez construire votre projet et construire des artefacts. Cette solution a également fonctionné pour les applications javaFX.
la source
Si vous travaillez sur un projet spring / mvn, vous pouvez utiliser cette commande:
Le fichier jar sera enregistré dans le répertoire cible.
la source
Ant et Maven sont largement utilisés. Je préfère Ant, je pense que c'est plus léger et vous le développeur êtes plus en contrôle. Certains suggèrent que c'est son inconvénient :-)
la source