wake-up-neo.com

Wie man Gläser von IntelliJ richtig baut?

Ich habe ein Projekt, das ein einzelnes Modul enthält, und einige Abhängigkeiten . Ich möchte ein Jar in einem separaten Verzeichnis erstellen, das das kompilierte Modul enthält. Außerdem möchte ich die Abhängigkeiten neben meinem Modul haben.

Unabhängig davon, wie ich den "build jar" -Prozess von IntelliJ verdrille, erscheint die Ausgabe meines Moduls leer (neben einer META-INF-Datei).

393
ripper234

So erstellen Sie ein Glas mit IntelliJ 10 http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/

Datei -> Projektstruktur -> Projekteinstellungen -> Artefakte -> Klicken Sie auf das grüne Pluszeichen -> Jar -> Von Modulen mit Abhängigkeiten ...

Das Obige legt das "Skelett" fest, in dem das Glas gespeichert werden soll. Um es tatsächlich zu erstellen und zu speichern, gehen Sie folgendermaßen vor: 

In das Zielglas extrahieren

OK

Build | Artefakt bauen

464
simao

Dies ist auch 2017 ein Thema, ich hoffe, es wird jemandem da draußen helfen! ... Ich habe unter IntelliJ 2017.2 2 Möglichkeiten gefunden, Arbeitsjar-s zu erstellen

1. Artefakt aus IntelliJ erstellen:

  • Gehen Sie zur Projektstruktur:

 File menu

  • Erstellen Sie ein neues Artefakt:

 Create a new artifact

  • Wählen Sie die Hauptklasse aus, und ändern Sie den Manifestordner unbedingt:

 enter image description here

Sie müssen das Manifest-Verzeichnis ändern:

<project folder>\src\main\Java 

ersetzen Sie "Java" durch "Ressourcen"

<project folder>\src\main\resources

So sollte es aussehen:

 correct way for new manifest

  • Dann wählen Sie die Abhängigkeiten, die Sie in Ihr Glas packen möchten, oder NEAR Ihre Jar-Datei

  • Um Ihr Artefakt zu erstellen, gehen Sie zu Artefakten und wählen Sie "Wiederherstellen". Es erstellt einen "out" -Ordner mit Ihrer JAR-Datei und ihren Abhängigkeiten.

 enter image description here

2. Verwenden von Maven-Assembly-Plugin

Fügen Sie der POM-Datei einen Build-Abschnitt hinzu

    <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>
  • Erstellen Sie eine neue Run/Debug-Konfiguration:

 Create a new run/debug configuration:

  • Anwendung auswählen:

 Choose application

  • Fülle das Formular aus
  • Fügen Sie das Maven-Ziel "Assembly: single" nach dem Build hinzu, um zuletzt ausgeführt zu werden

 enter image description here

 Final setup

  • Speichern Sie es und starten Sie es 

 enter image description here

Bei diesem Verfahren wird die JAR-Datei im Ordner "Ziel" erstellt

 JAR file location

135
Zsolt Tolvaly

Ich hatte kürzlich dieses Problem und denke, dass diese Schritte leicht zu befolgen sind, wenn bei früheren Lösungen oder Verknüpfungen Details fehlen.

So erstellen Sie einen .jar mit IntelliJ IDEA 14.1.5:

  1. Datei> Alle speichern.
  2. Führen Sie den Treiber oder die Klasse mit der Hauptmethode aus.
  3. Datei> Projektstruktur.
  4. Wählen Sie den Tab "Artefakte".
  5. Klicken Sie auf die grüne Plusschaltfläche oben im Fenster.
  6. Wählen Sie im Dropdown-Menü Hinzufügen die Option JAR aus. Wählen Sie "Von Modulen mit Abhängigkeiten"
  7. Hauptklasse auswählen.
  8. Das Optionsfeld sollte "In das Ziel-JAR extrahieren" auswählen. Drücke OK.
  9. Aktivieren Sie das Kontrollkästchen "Make on make"
  10. Klicken Sie auf Übernehmen und auf OK.
  11. Wählen Sie im Hauptmenü das Build-Dropdown-Menü aus.
  12. Wählen Sie die Option Artefakte erstellen.
126
user5442490

Für diejenigen, die wie ich von Bildern profitieren:

Datei -> Projektstruktur 

 enter image description here

 enter image description here

 enter image description here

 enter image description here

27
Crt

Es ist wahrscheinlich etwas spät, aber ich habe es so gelöst -> Mit winrar öffnen und ECLIPSEF.RSA und ECLIPSEF.SF im META-INF-Ordner löschen, außerdem "main-class: main_class_name" (ohne " .class ") in MANIFEST.MF. Vergewissern Sie sich, dass Sie nach der letzten Zeile zweimal "Enter" gedrückt haben, sonst funktioniert es nicht.

5
jbakirov

Hier sind 2 Beispiele mit Maven-Projekt, Schritt für Schritt:

Methode 1: Erstellen Sie jar mit maven und pom.xml

  1. Datei, neu, Projekt, Maven
  2. erstellen Sie ein Paket, erstellen Sie ein Java-Programm in diesem Paket enter image description here
  3. fügen Sie in pom.xml maven-jar-plugin hinzu.

        <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>
    

bildschirmaufnahme: enter image description here 4. Öffnen Sie das Maven-Projektfeld, indem Sie auf das Suchsymbol klicken und maven eingeben enter image description here

  1. klicken Sie auf Bereinigen und dann auf Installieren enter image description here

  2. ihre JAR-Datei wird im Zielordner angezeigt enter image description here

  3. testen Sie Ihr Glas mit Java-Jar 

enter image description here

Methode 2: Erstellen Sie jar mit maven ohne pom.xml-Änderung

  1. Datei, neu, Projekt, Maven
  2. ein Paket erstellen, ein Java-Programm innerhalb dieses Pakets erstellen (wie oben)
  3. Datei -> Projektstruktur -> Projekteinstellungen -> Artefakte -> Klicken Sie auf das grüne Pluszeichen -> Jar -> Von Modulen mit Abhängigkeit

Sehr wichtig!

Die MANIFEST.MF muss sich in Ihrem Ressourcenordner befinden und die Main.Class muss auf {package} - {Klassenname-das-enthält-Hauptklasse} verweisen.

enter image description here enter image description here

  1. klicken Sie dann im Menü auf Erstellen, Artefakte erstellen, Erstellen

enter image description here

  1. finde das Glas im Out-Ordner

enter image description here

  1. starte es :)

enter image description here

2
rrr

Idee 8.1.3

Jar ist in Ordnung, da es eine kompilierte Ausgabe im 'output'-Verzeichnis gibt (project/out/production //)

Ich denke, Sie müssen "Make" laufen lassen, bevor Sie Glas bauen

für Abhängigkeiten klicken Sie einfach auf "Bibliothek anzeigen" und wählen Sie aus, was Sie möchten.

1
Vugluskr

Vielleicht möchten Sie einen Blick auf Maven werfen ( http://maven.Apache.org ). Sie können es entweder als Hauptherstellungsprozess für Ihre Anwendung verwenden oder um bestimmte Aufgaben über das Dialogfeld Konfigurationen bearbeiten auszuführen. Das Erstellen einer JAR eines Moduls in Maven ist ziemlich trivial, wenn Sie alle Abhängigkeiten in eine selbstausführbare, auch triviale JAR aufnehmen möchten.

Wenn Sie Maven noch nie verwendet haben, möchten Sie Better Builds With Maven lesen.

1
Gary Rowe

Mit Maven können Sie dieses Plugin verwenden:

 <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

Mein Problem war folgendes: Ich habe Intellij IDEA (habe verschiedene Versionen ausprobiert) + Gradle verwendet. Als ich das Projekt kompilierte und ein Artefaktglas erstellte, wie in den obigen Antworten angegeben, erhielt ich die Fehlermeldung "Kein Hauptmanifestattrubut ...".

Diese Lösung hat bei mir funktioniert (besonderer Dank geht an Thilina Ashen Gamage (siehe oben) für den Tipp):

Auszug - Wenn Sie externe Bibliotheken verwenden und ein Projekt über Projekteinstellungen - Artefakte - Hinzufügen (+) - Jar - Aus Modulen mit Abhängigkeiten erstellen, liegt wahrscheinlich ein Programmfehler im Ordner META-INF mit der Datei MANIFEST_MF vor Ohne Glas. Um dies zu vermeiden, erstellen Sie eineLEEREjar-Datei.

Projekteinstellungen - Artefakte - Hinzufügen (+) - Einmachglas - LEERES GLAS . Der Ordner META-INF wird zum Ordner resources hinzugefügt. Dann wählen Sie Ihre Hauptklasse. Sie werden folgende Glasstruktur sehen:  note the presence of a folder META-INF Beachten Sie das Vorhandensein eines Ordners META-INF Dann können Sie Ihr Projekt erstellen und Artefakte erstellen. Diese Lösung funktionierte auch für JavaFX-Anwendungen.

0
Orkhan Hasanli

Hier ist die offizielle Antwort von IntelliJ IDEA 2018.3 Help . Ich habe es versucht und es hat funktioniert.

So erstellen Sie eine JAR-Datei aus einem Modul.

  1. Wählen Sie im Hauptmenü Build | Artefakt bauen.

  2. Wählen Sie aus der Dropdown-Liste das gewünschte Artefakt vom Typ JAR ..__ aus. Die Liste zeigt alle für das aktuelle Projekt konfigurierten Artefakte. Um alle konfigurierten Artefakte zu erstellen, wählen Sie Alle erstellen Artefakte Option.

0
Sabri Meviş

Wenn Sie versuchen, ein Glas mit Kotlin zu erstellen, müssen Sie einen src/main/Java-Ordner erstellen und diesen Ordner als Speicherort für den META-INF-Ordner verwenden.

0
Chris

Wenn ich diese Lösung benutze kommt dieser Fehler:

Java -jar xxxxx.jar

kein Hauptmanifestattribut in xxxxx.jar

und Lösung ist:

Sie müssen das Manifest-Verzeichnis ändern:

<project folder>\src\main\Java 

java in Ressourcen umwandeln

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

Einige der anderen Antworten sind unbrauchbar, da alle Änderungen verloren gehen, sobald Sie das IntelliJ-Projekt IDEA erneut aus dem Maven-Projekt importieren.

Das Erstellen der JAR-Datei muss durch eine Run/Debug-Konfiguration ausgelöst werden, nicht durch die Projekteinstellungen.

Jetbrains hat eine nette Beschreibung, wie Sie das hier erreichen können:

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

Scrollen Sie nach unten zum Abschnitt "Konfigurieren von Triggern für Maven-Ziele".

(Der einzige Nachteil ihrer Beschreibung besteht darin, dass ihre Screenshots im Standard-Schwarz-Weiß-Farbschema und nicht in einem super-atemberaubenden Darcula-Design enthalten sind. Ugh!)

Im Grunde ist das, was Sie tun, dass Sie das Fenster "Maven-Projekte" öffnen, das Projekt von Interesse finden (in Ihrem Fall das Projekt, das Ihr Glas erstellt), darunter das Maven-Ziel, das Sie ausführen möchten (Das Ziel "Paket" erstellt normalerweise Gläser), Sie öffnen das Kontextmenü (Rechtsklick auf einem Windows-Computer) und es wird eine Option "Vor Ausführung ausführen/Debug ..." angezeigt wählen Sie und es wird Sie an der Hand von dort nehmen. Wirklich einfach.

0
Mike Nakis

 enter image description here 

Wie die Leute oben sagen, muss ich aber einen Punkt beachten. Sie müssen das Kontrollkästchen aktivieren:

In Projekterstellung einbeziehen

0
Benchur Wong

Wenn Sie an einem Spring/MVN-Projekt arbeiten, können Sie diesen Befehl verwenden:

mvn package -DskipTests

Die JAR-Datei wird auf dem Zielgerät gespeichert.

0
Han Kai

Wenn Sie in Ihrem Projekt Bibliotheken von Drittanbietern verwenden oder Probleme beim Erstellen der MANIFEST.MF-Datei haben, kann es zu Konflikten beim Ausführen von JAR-Dateien kommen, die mit generiert wurden 

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

oben erwähnte Methode.

Ich empfehle Ihnen stattdessen, eine leere JAR-Datei zu erstellen und alle anderen Elemente manuell zum Ausgabestamm hinzuzufügen. Einen wunderbaren Blogartikel zu dieser Methode finden Sie hier: http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/ Ich habe die dort genannten Schritte ausprobiert und alles hat gut für mich funktioniert! 

Ich habe versucht, ein Glas aus einer Multimodul-Kotlin App zu erstellen und habe den berüchtigten Fehler "Kein Hauptmanifest-Attribut" erhalten. Das Erstellen des Manifest-Verzeichnisses in src/main/resources hat ebenfalls nicht funktioniert.

Stattdessen funktioniert es, wenn es direkt in src erstellt wird:src/META-INF/MANIFEST.MF.

 enter image description here

0
Tobias Uhmann