Ein jar bauen mit IntelliJ und maven

Zuletzt aktualisiert am 17. Januar 2024 1 Minute

Ich will ein Java Archiveexternal link (jar-File) bauen, das alle benötigten externen Bibliotheken enthält.

Getestet mit:

  • IntelliJ IDEA 2021.3
  • Java, JDK 17.01
  • Dependency Management: Maven

Angenommenes Projektverzeichnis:

/Users/mustermann/projects/my-app

im Folgenden abgekürzt mit [project-root]

bestehend aus einer Klasse, mit einer main Methode: my.app.Start

1. Mainfest ablegen

[project-root]/src/main/ressources/META-INF/MANIFEST.MF

Manifest-Version: 1.0
Main-Class: my.app.Start

Prüfen ob das Ressourcen Verzeichnis in den build Prozess eigebunden ist:

Menü -> File -> Project Structure… -> Modules. Wenn nicht, dann nachholen.

Hier sollte noch ein Bild hin :-)

2. Das maven-jar-plugin in die pom.xml einbinden

<project>
  ...
  <build>
    <plugins>
      ....
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.2.0</version>
          <configuration>
            <archive>
              <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>my.app.Start</mainClass>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        ...
      </plugins>
     ...
   </build>
</project>

3. Alle externen Libraries einbinden

Um alle Bibliotheken in das jar ein zu binden…

  • Menü -> File -> Project Structure… -> Artifacts
  • name: **MyApp**:jar
  • type: **jar**
  • output directory: [project-root]/target/generated-jar
  • [x] include in Project build

3. Run Konfiguration anlegen

Um das jar in IntelliJ aus zu führen…

  • Debug / Run Configurations ->  Edit
  • Add new Configuration -> JAR Application
    • Name: RunMyJar 
    • Path to jar: [project-root]target/generated-jar/target/MyApp.jar
    • Arbeitsverzeichnis: [project-root]

Bingo !