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 : Ajouter des librairies locales à un jar exécutable


Sujet :

Maven Java

  1. #1
    Membre du Club
    Profil pro
    Élève
    Inscrit en
    Avril 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Avril 2004
    Messages : 101
    Points : 65
    Points
    65
    Par défaut Maven : Ajouter des librairies locales à un jar exécutable
    Bonjour,

    J'ai un projet Java dans lequel j'ai des librairies situées dans un répertoire "lib".
    Les librairies semblent avoir été renommées : je ne veux donc pas passer par Maven pour les télécharger.
    Par contre, avec Maven, je voudrais faire un jar exécutable dans lequel les librairies sont présentes.

    J'ai tenté de passer par "jar-with-dependencies" mais bien que le "jar-with-dependencies.jar" soit créé, il n'y a pas les lib dedans...
    Je ne comprends pas pourquoi.

    J'ai essayé de mettre la dépendance en scope system en renseignant le systemPath avec {chemin absolu}/lib/nomdetonfichier.jar mais ça n'a pas mieux marché.

    Voici mon code :

    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
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
     
      <groupId>com.mon.package</groupId>
      <artifactId>MyProject01</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
     
      <name>MyProject01</name>
      <url>http://maven.apache.org</url>
     
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
     
      <dependencies>
     
        <dependency>
             <groupId>org.objectweb.asm</groupId>
    		 <artifactId>asm</artifactId>
    		 <version>1.5.3</version>
    		 <scope>system</scope>
    		 <systemPath>C:/lib/asm.jar</systemPath>
        </dependency>
     
      </dependencies>
     
    <build>
      <plugins>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
     
    <executions>      
    	<execution>      
    		<phase>package</phase>
    	<goals>
    		<goal>single</goal>
    	</goals>
     
    	<configuration>
            	<archive>
    	          <manifest>
                		<mainClass>
    				com.mon.package.maclasse
    			</mainClass>
              	  </manifest>
            	</archive>
            	<descriptorRefs>
              		<descriptorRef>jar-with-dependencies</descriptorRef>
            	</descriptorRefs>
          	</configuration>
    	</execution>      
          </executions>      
        </plugin>
      </plugins>
    </build>
     
    </project>
    Avez-vous une idée de comment faire ?

    Merci.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 476
    Points : 932
    Points
    932
    Billets dans le blog
    5
    Par défaut
    Ce n'est pas vraiment la philosophie Maven.

    Mais je pense qu'il y a deux solutions possibles.

    La première est principalement en entreprise.
    On utilise un nexus.
    https://www.baeldung.com/maven-deploy-nexus

    En résumé, c'est un serveur où on dépose des jars.

    Tu tapes sur ton nexus et tu déposes ton jar dans le nexus.

    Le second est plus lourd, et c'est ce que j'ai fais sur mon projet.
    https://bitbucket.org/philippegibaul...r40k/src/main/

    Si tu as le code du contenu de ton jar, tu en fait un projet maven.

    Tu fais un POM parent.
    Ton jar (devenu un projet Maven) a un POM héritant de ton POM parent.
    Et ton projet hérite du POM parent et a comme dépendance ton projet jar.

  3. #3
    Membre du Club
    Profil pro
    Élève
    Inscrit en
    Avril 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Avril 2004
    Messages : 101
    Points : 65
    Points
    65
    Par défaut
    Merci pour ta réponse.

    En fait, je me suis aperçu qu'en mettant mes librairies dans le répertoire /src/ressources, mon jar les embarquait bien, et sans rien spécifier de particulier dans mon pom.xml.
    Par contre, à l'exécution du jar, il ne trouve pas ces classes embarquées : java.lang.ClassNotFoundException

    Y a t-il quelque chose à ajouter dans maven ou le manifest ?

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 476
    Points : 932
    Points
    932
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-shade-plugin</artifactId>
    				<version>${maven.copie.class}</version>
    				<executions>
    					<execution>
    						<phase>package</phase>
    						<goals>
    							<goal>shade</goal>
    						</goals>
    					</execution>
    				</executions>
    			</plugin>

Discussions similaires

  1. Ajouter des librairies JAR à un modèle TOPCASED
    Par cloudvenger dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 26/07/2011, 11h08
  2. Ajouter des librairies à un .jar
    Par boulette85 dans le forum NetBeans
    Réponses: 28
    Dernier message: 12/07/2007, 15h15
  3. ajouter des librairies externes
    Par hannah dans le forum C++
    Réponses: 3
    Dernier message: 19/06/2006, 16h41
  4. [ JBoss ][ JFreeChart ]Ajouter une librairie externe au .jar
    Par Houbbba dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 27/03/2006, 10h26
  5. Ajouter des librairies externes pour la compilation en C++
    Par Roming22 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/07/2005, 10h15

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