IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

Construire un Jar Executable


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 99
    Par défaut Construire un Jar Executable
    Je cherche à builder un Jar executable.
    En d'autres termes, un jar portable ; c'est à dire, qu'il intègre toutes les dépendances dans lui-même (les .class nécessaires).
    Alors maven est un peu neuneu car ça marche pas en fait.
    J'ai un exemple qu'on faisait cela avec le maven-assembly-plugin
    Il suffit de mettre soit disant ds les plugins du pom.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-assembly-plugin</artifactId>
    				<version>2.2-beta-5</version>
    				<configuration>
    					<descriptorRefs>
    						<descriptorRef>jar-with-dependencies</descriptorRef>
    					</descriptorRefs>
    					<archive>
    						<manifest>
    							<mainClass>fr.intuitiv.tesseract.ocr.OCRMain</mainClass>
    						</manifest>
    					</archive>
    				</configuration>
    			</plugin>
    Alors c'est vrai que je vois bien grossir mon .jar et qu'il inclut toutes les dépendances. D'ailleurs avec le goal :

    Je lis bien les dépendances (transitives incluses par défaut) de mon projet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [INFO] 
    [INFO] The following files have been resolved:
    [INFO]    commons-beanutils:commons-beanutils:jar:1.7.0:compile
    [INFO]    commons-collections:commons-collections:jar:2.1:compile
    [INFO]    commons-digester:commons-digester:jar:1.6:compile
    [INFO]    commons-io:commons-io:jar:1.4:compile
    [INFO]    commons-lang:commons-lang:jar:2.5:provided
    [INFO]    commons-logging:commons-logging:jar:1.1.1:compile
    [INFO]    commons-validator:commons-validator:jar:1.3.1:compile
    [INFO]    dom4j:dom4j:jar:1.6.1:compile
    [INFO]    log4j:log4j:jar:1.2.16:compile
    [INFO]    xml-apis:xml-apis:jar:1.0.b2:compile
    [INFO]
    Et j'imagine que maven-assembly-plugin s'appuie sur cette liste pour builder mon Jar Runnable.
    Mais cette liste est incomplète. Il s'agit d'au niveau de dom4j. Dans la classe DocumentFactory, on lit un import

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import org.jaxen.VariableContext;
    Cet import est présent dans la librairie de jaxen.jar or cette dépendance n'est pas cité par Maven...c'est grave ça, les dépendances transitives ne marche pas avec mon dom4j pourtant j'ai mis la dep comme il le fallait dans mon pom.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <dependency>
    			<groupId>dom4j</groupId>
    			<artifactId>dom4j</artifactId>
    			<version>1.6.1</version>
    		</dependency>
    comme cité par le descripteur dans http://mvnrepository.com.
    Je me suis aperçu de cette erreur de build (manque la dep de jaxen) lorsque j'ai executé mon jar : la JaxenEception a été lancée et j'ai eu NoClassDefFound.
    Comment puis-je alors construire mon jar executable ?

    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 99
    Par défaut
    Bon pour corriger je n'ai rien trouvé de mieux qu'ajouter la dépendance directement dans le pom.xml comme ça le plugin assembly me la bundle dans le jar...

  3. #3
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Pour information, voici la déclaration de la dépendance jaxen dans le pom.xml de dom4j:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <dependency>
      <groupId>jaxen</groupId>
      <artifactId>jaxen</artifactId>
      <version>1.1-beta-6</version>
      <optional>true</optional>
    </dependency>

    Le fait d'avoir un optional à true signifie que la dépendance jaxen n'est pas récupérée transitivement quand un projet ne dépend que de dom4j.
    Si ton projet a besoin de jaxen, alors il te faut l'ajouter explicitement dans ta liste de dépendances, ce que tu as fait.
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 99
    Par défaut
    OK ok , bien vu !
    comme quoi ça peut être dangereux de mettre "optional" à true car celui qui veut faire un jar executable comme moi, je lui souhaite bonne chance .
    Pour ma part, seul jaxen a du être rajouté. Ouf.
    Merci.

Discussions similaires

  1. [JAR]Connection Mysql et jar executable
    Par Jones dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 01/04/2005, 14h27
  2. pb jbuilder et jar executable
    Par kliel dans le forum JBuilder
    Réponses: 9
    Dernier message: 23/12/2004, 00h28
  3. [JAR] jar executable cliquable
    Par spoutyoyo dans le forum Général Java
    Réponses: 8
    Dernier message: 22/12/2004, 16h04
  4. [Jar]Creation d'un jar executable
    Par Wisefool dans le forum Général Java
    Réponses: 22
    Dernier message: 26/11/2004, 11h40
  5. [jar executable][Service NT]
    Par paca_mike dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 28/04/2003, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo