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 :

[maven-assembly-plugin] comment inclure une seule dépendence dans mon jar ?


Sujet :

Maven Java

  1. #1
    Membre du Club Avatar de daronmaster
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 67
    Points : 56
    Points
    56
    Par défaut [maven-assembly-plugin] comment inclure une seule dépendence dans mon jar ?
    Bonjour,

    J'ai un projet maven qui utilise plusieurs dépendances (vous me direz comme beaucoup de projets ...).

    Une fois le projet sous forme de jar, je charge dynamiquement une des classe incluses dans celui-ci.

    Le problème, c'est qu'il manque les classes des dépendances et donc me sort une erreur lors du chargement.

    J'ai donc choisi d'inclure ma dépendance (qui me donne l'erreur si elle n'est pas chargée), voici le 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
    <?xml version="1.0" encoding="UTF-8"?><project>
      <parent>
        <artifactId>mon.projet.parent</artifactId>
        <groupId>a.moi</groupId>
        <version>1.0</version>
      </parent>
      <modelVersion>4.0.0</modelVersion>
      <groupId>my.project</groupId>
      <artifactId>id</artifactId>
      <name>myProject</name>
      <version>1.0-SNAPSHOT</version>
     
      <build>
      	<plugins>
      		<plugin>
      			<artifactId>maven-assembly-plugin</artifactId>
    			<configuration>
              		       <descriptorRefs>
                		            <descriptorRef>jar-with-dependencies</descriptorRef>
              		       </descriptorRefs>
            	        </configuration>
      		</plugin>
      	</plugins>
     
      </build>
      <dependencies>
     
        <dependency>
          <groupId>A</groupId>
          <artifactId>a</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
     
        <dependency>
        	<groupId>B</groupId>
        	<artifactId>b</artifactId>
        </dependency>
     
        <dependency>
        	<groupId>C</groupId>
        	<artifactId>c</artifactId>
        </dependency>
     
        <dependency>
        	<groupId>D</groupId>
        	<artifactId>d</artifactId>
        </dependency>
     
      </dependencies>
    </project>
    En exécutant mvn assembly:assembly dans ma console, vous avez deviné que toutes les dépendances étaient incluses dans mon jar.

    Je souhaiterai n'inclure que la dépendance D (la dernière), avez-vous une idée ?

    merci
    Tchû

  2. #2
    Membre du Club Avatar de daronmaster
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 67
    Points : 56
    Points
    56
    Par défaut
    Salut toi alors ça avance ? Ahh j'suis bête c'est mon post ...

    Bon sinon j'ai trouvé une solution mais qui pour l'instant ne me plaît pas beaucoup . Vous allez comprendre pourquoi :

    Voici le POM 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
    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
    <?xml version="1.0" encoding="UTF-8"?><project>
      <parent>
        <artifactId>mon.projet.parent</artifactId>
        <groupId>a.moi</groupId>
        <version>1.0</version>
      </parent>
      <modelVersion>4.0.0</modelVersion>
      <groupId>my.project</groupId>
      <artifactId>id</artifactId>
      <name>myProject</name>
      <version>1.0-SNAPSHOT</version>
      
      <build>
      	<plugins>
      		<plugin>
      			<artifactId>maven-assembly-plugin</artifactId>
    			<configuration>
              		       <descriptors>
                                          <descriptor>src/main/assembly/dep.xml</descriptor>
                                   </descriptors>
            	        </configuration>
      		</plugin>
      	</plugins>
      
      </build>
      <dependencies>
     
        <dependency>
          <groupId>A</groupId>
          <artifactId>a</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
     
        <dependency>
        	<groupId>B</groupId>
        	<artifactId>b</artifactId>
        </dependency>
     
        <dependency>
        	<groupId>C</groupId>
        	<artifactId>c</artifactId>
        </dependency>
     
        <dependency>
        	<groupId>D</groupId>
        	<artifactId>d</artifactId>
        </dependency>
     
      </dependencies>
    </project>
    et voici le fichier dep.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
    16
    17
    18
    19
    20
    21
    22
    <assembly>
    	<id>jar-with-only-one-dependency</id>
    	<formats>
    		<format>jar</format>
    	</formats>
    	<includeBaseDirectory>false</includeBaseDirectory>
    	<dependencySets>
    		<dependencySet>
    			<unpack>true</unpack>
    			<scope>runtime</scope>
    								
    			<includes>
    								
    				<include>D:d</include>
    				<include>my.project:id</include>
    				
    			</includes>			
    					
    		</dependencySet>	
    	</dependencySets>
    	
    </assembly>
    donc comme vous pouvez le voir, dans la section "Includes", je mets explicitement ma dépendance que je veux inclure et mon projet ...
    Y'a pas un truc qui vous chiffonne ?

    J'INCLUS mon projet et ça ne me plait pas. Si je ne l'inclus pas, le jar final ne contient que ma dépendance.

    Un petit peu d'aide s'il vous plait serait la bienvenue ...

    Merci
    Tchû

  3. #3
    Membre du Club Avatar de daronmaster
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 67
    Points : 56
    Points
    56
    Par défaut
    C'est encore et toujours moi, j'aime me parler à moi-même et trouver les solutions à mes problèmes, en fait ce post c'est un peu comme un journal intime si vous voyez ce que je veux dire.

    Si j'ai un problème je l'écris et si j'ai la solution je l'écris (vous me direz c'est toujours mieux que ceux qui ont un pb et qui passe en résolu sans mettre la solution ...), mais qd même, je suis sur que mon problème est connu mais qu'en fait y'a des flèmards ...

    Alors voilà ce que j'ai fait:

    J'ai simplement modifié le fichier dep.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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <assembly>
    	<id>jar-with-only-one-dependency</id>
    	<formats>
    		<format>jar</format>
    	</formats>
    	<includeBaseDirectory>false</includeBaseDirectory>
    	<dependencySets>
    		<dependencySet>
    			<unpack>true</unpack>
    			<scope>runtime</scope>
     
    			<includes>
     
    				<include>D:d</include>
     
    			</includes>
     
    		</dependencySet>
     
     
    	</dependencySets>
    	<fileSets>
    		<fileSet>
    			<directory>${project.build.outputDirectory}
    			</directory>
    			<outputDirectory>/</outputDirectory>
    		</fileSet>
    	</fileSets>
     
    </assembly>
    J'ai supprimer mon auto-dépendance (j'incluais mon projet dans la section "Includes") et j'ai ajouté la section "FileSets" dans laquelle je dis que les .class de mon projet doivent être copiés à la racine du jar.

    Et voilà le tour est joué ...

    Merci encore à moi même , et j'espère que ce post sera utile à certains d'entre vous.

    Tchû
    Tchû

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/06/2011, 07h53
  2. Réponses: 3
    Dernier message: 20/09/2010, 14h55
  3. [XSLT] Comment inclure une balise xsl dans une balise html
    Par sylsau dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 13/10/2006, 09h33
  4. Réponses: 6
    Dernier message: 19/07/2006, 13h48
  5. Réponses: 10
    Dernier message: 16/05/2006, 14h13

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