Maven - Erstellen Sie eine fette Jar-Datei - Ein-JAR-Beispiel
In diesem Tutorial zeigen wir Ihnen, wie Sie mit dem Maven-Build-Tool One-JAR-Plugin ein einzelnes Jar zusammen mit seinen Abhängigkeits-Jars in einer einzigen ausführbaren Jar-Datei, dem so genannten Fat Jar, erstellen.
Benutztes Werkzeug :
Maven 3.1.1
JDK 1.7
Joda-Zeit 2.5
1. Erstellen Sie ein einfaches Java-Projekt
Erstellen Sie ein Java-Projekt aus der Maven-Schnellstartvorlage.
Aktualisieren Siepom.xml, um die Jodatime-Abhängigkeiten zu deklarieren. Stellen Sie für die Ausgabe im FormatJaricher, dass das Verpackungsetikett auf "jar" gesetzt ist. Lesen Sie die Kommentare selbsterklärend.
Aktualisieren Sie die generiertenApp.java mit dem folgenden Inhalt:
App.java
package com.example.core.utils;
import org.joda.time.LocalDate;
public class App {
public static void main(String[] args) {
System.out.println(getLocalCurrentDate());
}
//Print current date with JodaTime
private static String getLocalCurrentDate() {
LocalDate date = new LocalDate();
return date.toString();
}
}
4. Jar File
Maven packt das Projekt, um die endgültige Jar-Datei zu generieren. Ein neuerdateutils.jar wird im Ordner$project/target erstellt.
$ java -jar dateutils.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/joda/time/LocalDate
at com.example.core.utils.App.getLocalCurrentDate(App.java:14)
at com.example.core.utils.App.main(App.java:9)
Caused by: java.lang.ClassNotFoundException: org.joda.time.LocalDate
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 2 more
Oben ist die erwartete Fehlermeldung, dajoda-time.jar fehlt.
5. Ein-Glas-Beispiel
Aktualisieren Siepom.xml, um das One-Jar-Plugin zu verwenden. Es wird ein einzelnes Jar zusammen mit seinen Abhängigkeits-Jars erstellt.
Das Ein-Jar-Plugin legt die Laufzeitabhängigkeiten im Ordnerlib ab, z. B.lib/joda-time-2.5.jar, und das Haupt-Jar im Ordnermain, z. B.main/dateutils.jar. Darüber hinaus werden viele Simontuffs-Klassen erstellt, um das korrekte Laden der enthaltenen Jars zu erleichtern.
Versuchen Sie, das letzte Fettglas laufen zu lassen.