Maven - Créer un gros fichier Jar - Exemple One-JAR
Dans ce tutoriel, nous allons vous montrer comment utiliser l'outil de construction Maven, le plugin One-JAR pour créer un seul Jar avec ses Jars de dépendance dans un seul fichier Jar exécutable, appelé fat Jar.
Les outils utilisés :
Maven 3.1.1
JDK 1.7
Joda-temps 2.5
1. Créer un projet Java simple
Créez un projet Java à partir du modèle de démarrage rapide Maven.
Mettez à jourpom.xml pour déclarer les dépendances jodatime. Pour une sortie au formatJar, assurez-vous que l’étiquette d’emballage est définie sur «jar». Lisez les commentaires pour s'expliquer d'eux-mêmes.
Mettez à jour lesApp.java générés avec le contenu suivant:
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. Fichier Jar
Maven package le projet pour générer le fichier Jar final. Un nouveaudateutils.jar est créé dans le dossier$project/target.
$ 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
Ci-dessus se trouve le message d'erreur attendu, car lejoda-time.jar est manquant.
5. Exemple d'un pot
Mettez à jourpom.xml pour utiliser le plugin One-Jar, il créera un seul Jar avec ses Jars de dépendance.
Le plugin One-Jar place les dépendances d'exécution dans le dossierlib, par exemplelib/joda-time-2.5.jar, et le fichier jar principal dans le dossiermain, par exemplemain/dateutils.jar. De plus, il crée également de nombreuses classes simontuffs pour aider à charger correctement les Jars inclus.