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] Création multiples de jar avec différentes mainClass


Sujet :

Maven Java

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 151
    Points : 254
    Points
    254
    Par défaut [Maven2] Création multiples de jar avec différentes mainClass
    Bonjour,

    Je suis actuellement sur une appli Java client-serveur (forum tout bête en RMI).

    J'ai un projet commun dans lequel j'ai et mon client, mon serveur et mes objets communicants et une librairie externe (fournie par le prof) importée.

    J'arrive à générer des jar exécutable pour le client et le serveur en incluant ma lib externe mais seulement, je suis obligé de modifier mon pom.xml entre les deux générations pour modifier la mainClass et mon nom de sortie.

    J'ai créé des assembly-client.xml et assembly-serveur.xml pour utiliser des descriptors différents et ainsi des noms de sortie différents, mais le manifest (pour le mainClass) n'est pas dedans.
    => Je pense que c'est plutôt sur cette voie qu'il faut que je creuse.

    J'ai essayé de dupliquer le plugin maven-assembly-plugin et en allouer un au client et un au serveur, mais seul le dernier est pris en compte.

    Voici l'arborescence de mon projet :
    .
    ├── lib
    │ └── paquetagesMaison.jar
    ├── pom.xml
    ├── src
    │ ├── main
    │ │ ├── assembly
    │ │ │ ├── assembly-client.xml
    │ │ │ ├── assembly-serveur.xml
    │ │ │ └── assembly.xml
    │ │ └── java
    │ │ └── alma
    │ │ ├── core
    │ │ │ ├── AffichageClient.java
    │ │ │ ├── ClientForum.java
    │ │ │ ├── InterfaceAffichageClient.java
    │ │ │ ├── InterfaceServeurForum.java
    │ │ │ ├── InterfaceSujetDiscussion.java
    │ │ │ ├── ServeurForum.java
    │ │ │ └── SujetDiscussion.java
    │ │ └── ihm
    │ │ └── Placement.java


    Je souhaiterais donc un jar exécutable sur ClientForum et un jar exécutable sur ServeurForum et tout ça dans le même pom.xml

    Avez-vous une solution (autre que de séparer mon projet en 2 maven) ?

    pom.xml et fichiers assembly en PJ.
    Maven 2.2.1

    Merci d'avance,

    Mat
    Fichiers attachés Fichiers attachés
    Pensez au et un petit vote si mon post vous a été utile .

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 151
    Points : 254
    Points
    254
    Par défaut
    Evolution du problème, Résolution en partie et découverte de nouveaux problèmes

    J'ai maintenant mes 2 jars séparés. Pour cela j'ai créé 2 modules.

    Seulement maintenant j'ai des problèmes d'arborescence.
    La nouvelle arborescence est la suivante :
    .
    ├── client
    │** └── pom.xml
    ├── lib
    │** └── paquetagesMaison.jar
    ├── pom.xml
    ├── serveur
    │** └── pom.xml
    └── src
    ├── main
    │** ├── assembly
    │** │** ├── assembly-client.xml
    │** │** └── assembly-serveur.xml
    │** └── java
    │** └── alma
    │** ├── core
    │** │** ├── AffichageClient.java
    │** │** ├── ClientForum.java
    │** │** ├── InterfaceAffichageClient.java
    │** │** ├── InterfaceServeurForum.java
    │** │** ├── InterfaceSujetDiscussion.java
    │** │** ├── ServeurForum.java
    │** │** └── SujetDiscussion.java
    │** └── ihm
    │** └── Placement.java

    Dans mes jars, je n'ai plus mes classes compilées, mais uniquement le contenu de mes jars importés.
    Logique, étant donné que mon dossier src se situe un étage en dessous de mes sous-pom.xml
    Comment faire pour lui dire où aller chercher les classes compilées (qui ne sont même plus dans le target d'origine).

    J'ai remis mes pom.xml en PJ (renommés pour l'up, mais pas dans les dossiers )
    Pas de changement sur les assembly-xxx.xml
    Fichiers attachés Fichiers attachés
    Pensez au et un petit vote si mon post vous a été utile .

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 151
    Points : 254
    Points
    254
    Par défaut
    Problème enfin résolu après avoir passé près de 10h dessus, il suffisait de gérer plusieurs exécutions de maven-assembly-plugin, cette solution est plus simple et évite d'avoir à gérer plusieurs modules.

    Voici une partie de mon pom.xml qui a résolu le problème.
    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
    <project>
    
      [...]
    
      <build>
        <plugins>
            
          [...]
          
          <plugin> <!-- Génération des jar exécutables -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2.2</version>
            <executions>
              <execution> <!-- Client -->
                <id>client</id>
                <configuration>
                  <descriptors>
                    <descriptor>${project.basedir}/src/main/assembly/assembly-client.xml</descriptor>
                  </descriptors>
                  <archive>
                    <manifest>
                      <mainClass>alma.core.ClientForum</mainClass>
                    </manifest>
                  </archive>
                  <outputDirectory>${project.build.directory}</outputDirectory>
                </configuration>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
              <execution> <!-- Serveur -->
                <id>serveur</id>
                <configuration>
                  <descriptors>
                    <descriptor>${project.basedir}/src/main/assembly/assembly-serveur.xml</descriptor>
                  </descriptors>
                  <archive>
                    <manifest>
                      <mainClass>alma.core.ServeurForum</mainClass>
                    </manifest>
                  </archive>
                  <outputDirectory>${project.build.directory}</outputDirectory>
                </configuration>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          
          [...]
            
        </plugins>
      </build>
    
      [...]
     
    </project>
    La section configuration se retrouve dans chaque execution et non en dehors comme il l'était à l'origine.

    J'utilise encore les fichiers assembly, il y a surement moyen de s'en passer, mais pour l'instant ça me permet de conserver des noms distincts versionnés.

    J'ai donc une arborescence finale :

    .
    ├── lib
    │** └── paquetagesMaison.jar
    ├── pom.xml
    └── src
    └── main
    ├── assembly
    │** ├── assembly-client.xml
    │** └── assembly-serveur.xml
    └── java
    └── alma
    ├── core
    │** ├── AffichageClient.java
    │** ├── ClientForum.java
    │** ├── InterfaceAffichageClient.java
    │** ├── InterfaceServeurForum.java
    │** ├── InterfaceSujetDiscussion.java
    │** ├── ServeurForum.java
    │** └── SujetDiscussion.java
    └── ihm
    └── Placement.java

    Le pom.xml complet se trouve en pièce jointe.

    Voici ma solution que j'ai essayé de détailler, en espérant que ça puisse servir à d'autres.

    @+

    Mat
    Fichiers attachés Fichiers attachés
    Pensez au et un petit vote si mon post vous a été utile .

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/06/2010, 10h17
  2. Réponses: 15
    Dernier message: 21/01/2009, 10h32
  3. création de fichier Jar avec JBuilder
    Par zazou19 dans le forum JBuilder
    Réponses: 3
    Dernier message: 30/12/2008, 22h37
  4. Réponses: 6
    Dernier message: 12/06/2006, 16h38
  5. [JAR]Création d'un JAR avec des dependances sous Eclipse
    Par muthnik dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 05/07/2005, 17h39

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