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 :

Générer un Jar avec dépendance puis l'intégrer dans une archive Zip.


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Par défaut Générer un Jar avec dépendance puis l'intégrer dans une archive Zip.
    Bonjour à tous,

    J'ai un petit soucis. J'aimerais pouvoir générer un Jar exécutable de mon application puis par la suite l'intégrer dans une archive Zip.

    Pour le moment j'ai seulement effectué l'étape de la génération du Jar.

    Voici le Pom et Assembly :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    <?xml version="1.0" encoding="UTF-8"?>
    <project>
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>OUATE</groupId>
    	<artifactId>jAriane</artifactId>
    	<packaging>jar</packaging>
    	<version>2.3.0</version>
     
    	<reporting>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-javadoc-plugin</artifactId>
    				<version>2.7</version>
    				<configuration>
     
    				</configuration>
    			</plugin>
    		</plugins>
    	</reporting>
     
    	<build>
     
    		<!-- Définition de l'arborescence "OUATE" -->
    		<sourceDirectory>src</sourceDirectory>
    		<testSourceDirectory>test</testSourceDirectory>
     
    		<defaultGoal>clean install</defaultGoal>
     
    		<!-- Inclusion des fichiers ressources pour les tests automatiques -->
    		<testResources>
    			<testResource>
    				<directory>test/com/tas/ouate/jariane/common/util/resources</directory>
    			</testResource>
    		</testResources>
     
     
    		<plugins>
     
    			<!-- Plugin pour la compilation -->
    			<plugin>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<configuration>
    					<source>1.6</source>
    					<target>1.6</target>
    				</configuration>
    			</plugin>
     
    			<!-- Plugin pour la création d'un JAR exécutable -->
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-assembly-plugin</artifactId>
    				<version>2.1</version>
    				<configuration>
    					<descriptor>assembly.xml</descriptor>
    					<archive>
    						<manifest>
    							<mainClass>fr.thales.ouate.jAriane.Main.Ariane</mainClass>
    						</manifest>
    					</archive>
    				</configuration>
    				<executions>
    					<execution>
    						<phase>package</phase>
    						<goals>
    							<goal>single</goal>
    						</goals>
    					</execution>
    				</executions>
    			</plugin>
     
    		</plugins>
     
    	</build>
     
    	<!-- Dépendances -->
    	<dependencies>
     
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>4.8.2</version>
    			<scope>test</scope>
    		</dependency>
     
    		<dependency>
    			<groupId>OUATE</groupId>
    			<artifactId>OUATE</artifactId>
    			<version>1.15.0-SNAPSHOT</version>
    		</dependency>
     
    		<dependency>
    			<groupId>OUATE</groupId>
    			<artifactId>jCosy</artifactId>
    			<version>1.4.0-SNAPSHOT</version>
    		</dependency>
     
    		<dependency>
    			<groupId>log4j</groupId>
    			<artifactId>log4j</artifactId>
    			<version>1.2.13</version>
    		</dependency>
     
    		<dependency>
    			<groupId>org.jdom</groupId>
    			<artifactId>jdom</artifactId>
    			<version>1.1</version>
    		</dependency>
     
    		<dependency>
    			<groupId>net.sourceforge.jexcelapi</groupId>
    			<artifactId>jxl</artifactId>
    			<version>2.6.10</version>
    		</dependency>
     
    		<dependency>
    			<groupId>jgoodies</groupId>
    			<artifactId>looks</artifactId>
    			<version>1.2.2</version>
    		</dependency>
     
    	</dependencies>
    </project>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <assembly>
    	<id>with-dep</id>
    	<formats>
    		<format>jar</format>
    	</formats>
    	<includeBaseDirectory>false</includeBaseDirectory>
    	<dependencySets>
    		<dependencySet>
    			<outputDirectory>/</outputDirectory>
    			<unpack>true</unpack>
    			<scope>runtime</scope>
    		</dependencySet>
    	</dependencySets>
    </assembly>

    Si vous avez une idée de comment faire je suis preneur

    Merci pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Essaye :
    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
    16
    17
    18
    19
    20
    21
    <assembly>
    	<formats>
    		<format>tar.gz</format>
    	</formats>
            <!-- LE JAR QUE TU GENERE --> 
    	<fileSets>
    		<fileSet>
    			<directory>target</directory>
    			<outputDirectory></outputDirectory>
    			<includes>
    				<include>*.jar</include>
    			</includes>
    		</fileSet>
    	</fileSets>
            <!-- LES DEPENDANCES --> 
    	<dependencySets>
    		<dependencySet>
    			<outputDirectory>/lib</outputDirectory>
    		</dependencySet>
    	</dependencySets>
    </assembly>

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Par défaut
    Tout d'abord merci de ton aide

    Avec ta solution celà génère un fichier Jar (mais beaucoup moins volumineux qu'avant, et il ne se lance pas (du aux dépendances?)). Ensuite ça génère un dossier lib avec beaucoup de fichier Jar.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Normalement ça doit générer un tar.gz avec ton jar dedans ainsi qu'un dossier LIB avec les dependances :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    .tar.gz
        |- artifact.jar
        |- lib 
             |- dependency1.jar
             |- dependency2.jar
             |- dependency3.jar
    Tu peux placer les dépendances à la racine si tu préfère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    .tar.gz
        |- artifact.jar
        |- dependency1.jar
        |- dependency2.jar
        |- dependency3.jar
    Pour que ton jar soit exécutable la mainClass, il faut configurer le MANIFEST au niveau du maven-jar-plugin



    Edit :
    J'ai peut être mal compris ton besoin. Tu souhaites avoir un seul jar qui contient toutes les classes de tes dépendencies + tes classes à toi ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Par défaut
    Il n'y a pas moyen de ne pas avoir les dépendances, enfait que le jar principal soit créé en fonction de ses dépendances ? Merci

    Edit : J'aimerais en fait avoir un seul Jar exécutable (donc pour se faire il faut qu'il soit créé avec ses dépendances). Par la suite je rajouterais dans le zip de la documentation.

    Merci encore de ton aide

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    En général, on fait un jar exécutable en configurant mainClass et classpath dans le MANIFEST.MF avec les dépendances à côté.

    Je ne sais pas comment intégrer les dépendances dans ton jar. Et je ne pense pas que ce soit une bonne idée.

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Citation Envoyé par Mathieu.J Voir le message
    il faut configurer le MANIFEST au niveau du maven-jar-plugin

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Par défaut
    Oups pardon...

    Cependant lorsque je le fais au niveau de maven-jar-plugin, il y a une erreur.


    D:\Documents and Settings\aounp\workspace\jAriane>mvn clean install
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Unnamed - OUATE:jAriane:jar:2.3.0
    [INFO] task-segment: [clean, install]
    [INFO] ------------------------------------------------------------------------
    Downloading: http://repo1.maven.org/maven2/org/ap...s/maven-jar-pl
    ugin/2.1/maven-jar-plugin-2.1.pom
    [WARNING] Unable to get resource 'org.apache.maven.plugins:maven-jar-plugin:pom:
    2.1' from repository central (http://repo1.maven.org/maven2): Error transferring
    file: repo1.maven.org
    Downloading: http://repo1.maven.org/maven2/org/ap...s/maven-jar-pl
    ugin/2.1/maven-jar-plugin-2.1.pom
    [WARNING] Unable to get resource 'org.apache.maven.plugins:maven-jar-plugin:pom:
    2.1' from repository central (http://repo1.maven.org/maven2): Error transferring
    file: repo1.maven.org
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Error building POM (may not be this project's POM).


    Project ID: org.apache.maven.plugins:maven-jar-plugin

    Reason: POM 'org.apache.maven.plugins:maven-jar-plugin' not found in repository:
    Unable to download the artifact from any repository

    org.apache.maven.plugins:maven-jar-plugin:pom:2.1

    from the specified remote repositories:
    central (http://repo1.maven.org/maven2)

    for project org.apache.maven.plugins:maven-jar-plugin


    [INFO] ------------------------------------------------------------------------
    [INFO] For more information, run Maven with the -e switch
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 3 seconds
    [INFO] Finished at: Fri May 11 09:08:42 CEST 2012
    [INFO] Final Memory: 2M/15M
    [INFO] ------------------------------------------------------------------------

    Voici mon Pom :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    <?xml version="1.0" encoding="UTF-8"?>
    <project>
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>OUATE</groupId>
    	<artifactId>jAriane</artifactId>
    	<packaging>jar</packaging>
    	<version>2.3.0</version>
     
    	<reporting>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-javadoc-plugin</artifactId>
    				<version>2.7</version>
    				<configuration>
     
    				</configuration>
    			</plugin>
    		</plugins>
    	</reporting>
     
    	<build>
     
    		<!-- Définition de l'arborescence "OUATE" -->
    		<sourceDirectory>src</sourceDirectory>
    		<testSourceDirectory>test</testSourceDirectory>
     
    		<defaultGoal>clean install</defaultGoal>
     
    		<!-- Inclusion des fichiers ressources pour les tests automatiques -->
    		<testResources>
    			<testResource>
    				<directory>test/com/tas/ouate/jariane/common/util/resources</directory>
    			</testResource>
    		</testResources>
     
     
    		<plugins>
     
    			<!-- Plugin pour la compilation -->
    			<plugin>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<configuration>
    					<source>1.6</source>
    					<target>1.6</target>
    				</configuration>
    			</plugin>
     
    			<!-- Plugin pour la création d'un JAR exécutable -->
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-jar-plugin</artifactId>
    				<version>2.1</version>
    				<configuration>
    					<descriptor>assembly.xml</descriptor>
    					<archive>
    						<manifest>
    							<addClasspath>true</addClasspath>
    							<mainClass>fr.thales.ouate.jAriane.Main.Ariane</mainClass>
    						</manifest>
    					</archive>
    				</configuration>
    				<executions>
    					<execution>
    						<phase>package</phase>
    						<goals>
    							<goal>single</goal>
    						</goals>
    					</execution>
    				</executions>
    			</plugin>
     
    		</plugins>
     
    	</build>
     
    	<!-- Dépendances -->
    	<dependencies>
     
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>4.8.2</version>
    			<scope>test</scope>
    		</dependency>
     
    		<dependency>
    			<groupId>OUATE</groupId>
    			<artifactId>OUATE</artifactId>
    			<version>1.15.0-SNAPSHOT</version>
    		</dependency>
     
    		<dependency>
    			<groupId>OUATE</groupId>
    			<artifactId>jCosy</artifactId>
    			<version>1.4.0-SNAPSHOT</version>
    		</dependency>
     
    		<dependency>
    			<groupId>log4j</groupId>
    			<artifactId>log4j</artifactId>
    			<version>1.2.13</version>
    		</dependency>
     
    		<dependency>
    			<groupId>org.jdom</groupId>
    			<artifactId>jdom</artifactId>
    			<version>1.1</version>
    		</dependency>
     
    		<dependency>
    			<groupId>net.sourceforge.jexcelapi</groupId>
    			<artifactId>jxl</artifactId>
    			<version>2.6.10</version>
    		</dependency>
     
    		<dependency>
    			<groupId>jgoodies</groupId>
    			<artifactId>looks</artifactId>
    			<version>1.2.2</version>
    		</dependency>
     
    	</dependencies>
    </project>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Générer un jar avec du code java
    Par SuperPat dans le forum Général Java
    Réponses: 2
    Dernier message: 10/08/2009, 11h32
  2. générer un jar avec les dépendance.
    Par damien77 dans le forum Maven
    Réponses: 3
    Dernier message: 23/02/2009, 00h22
  3. générer un .jar avec JCreator
    Par ouchemhou dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 09/01/2009, 12h09
  4. Générer un jar avec ces librairies dépendantes
    Par untipy dans le forum NetBeans
    Réponses: 1
    Dernier message: 30/08/2007, 18h32
  5. Réponses: 3
    Dernier message: 03/11/2006, 17h35

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