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 :

[Maven2]Jar executable avec ses librairies


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Par défaut [Maven2]Jar executable avec ses librairies
    Bonjour,

    J'ai crée une petite appli avec une main class, et j'aimerais que maven me crée un jar executable.

    Ok, j'ai rajouté le plug in

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
    <archive>
    <manifest>
    <mainClass>com.classe.mainclass</mainClass>
    <addClasspath>true</addClasspath>
    </manifest>
    </archive>
    </configuration>
    </plugin>

    Mais quand je fais un "mvn package", il me crée bien le jar executable mais sans ses dependances (librairies), ça fait que quand je lance mon jar, il me fait des ClassNotFound ...

    Comment résoudre ce probleme ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 172
    Par défaut
    Ce n'est pas avec le plugin jar que tu peux faire celà, mais avec le plugin assembly comme ceci:

    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
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.1</version>
            <configuration>
              <descriptor>src/assembly/app.xml</descriptor>
              <archive>
                <manifest>
                  <mainClass>com.classe.mainclass</mainClass>
                </manifest>
              </archive>
            </configuration>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
    et avec un assembly descriptor similaire à celui-ci:

    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
     
    <assembly>
      <id>app</id>
      <formats>
        <format>jar</format>
      </formats>
      <includeBaseDirectory>false</includeBaseDirectory>
      <dependencySets>
        <dependencySet>
          <outputDirectory>/</outputDirectory>
          <unpack>true</unpack>
          <scope>runtime</scope>
        </dependencySet>
      </dependencySets>
    </assembly>

  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
    C'est normal, dans la mesure où quand tu crées un JAR avec Java (pas nécessairement avec Maven), ton JAR ne contient que les classes compilées de ton projet, et non ses dépendances.

    Pour résoudre ton problème, soit tu spécifies le classpath de ta librairie dans le META-INF, soit tu as recours à des outils qui regroupent tout dans un seul jar (tes classes + les dépendances), tels que OneJar, BigJar, etc...
    Je ne sais pas si un plugin Maven existe pour faire cette tache.
    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
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    ..
    Je ne sais pas si un plugin Maven existe pour faire cette tache.
    Cf l'assembly proposée ci dessus par emmanuel.

Discussions similaires

  1. Jar executable avec eclipse
    Par Bulveye dans le forum Applets
    Réponses: 0
    Dernier message: 11/06/2010, 20h08
  2. Réponses: 0
    Dernier message: 27/03/2010, 12h55
  3. Jar executable avec Ant, souci de main class
    Par _Ulysse_ dans le forum ANT
    Réponses: 10
    Dernier message: 02/02/2009, 15h47
  4. compiler une application c++ avec ses librairies
    Par elekis dans le forum Linux
    Réponses: 2
    Dernier message: 08/08/2007, 20h19
  5. Créer un jar exécutable avec ses dépendances
    Par Foub dans le forum Langage
    Réponses: 8
    Dernier message: 13/05/2007, 12h38

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