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 :

Inclure les classes d'un jar dans un war


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Par défaut Inclure les classes d'un jar dans un war
    Bonjour,

    Je suis à la recherche d'une solution pour packager un war avec, entre autre, pour dépendance un jar qu'il faudrait exploser et dont il faudrait mettre le contenu dans WEB-INF/classes.

    Cela semble se faire assez facilement pour un jar, mais je n'ai pas trouvé de solution avec un war.

    Quelqu'un a-t-il eu ce genre de problème à résoudre ?

    Merci à l'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2011
    Messages : 24
    Par défaut
    Tu travail sous eclipse?
    si oui :
    propriétés du projet, tu les inclus dans javaBuulidPath->Libraries et dans javaBuulidPath->OrderAndExport et enfin dand DeployementAssembly.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Par défaut
    Je travaille sous eclipse, mais malheureusement je recherche une solution pouvant être exécutée en dehors d'eclipse et avec Maven

    Après quelques recherches j'ai l'impression qu'il va me falloir utiliser le plugin assembly, transformer le packaging de mon projet de 'war' à 'pom' et tout faire à la main dans mon fichier assembly ... pas cool

    Merci néanmoins de ta réponse.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Par défaut
    J'ai résolu le problème avec le plugin assembly.

    J'ai laissé le type de packaging à "war". Celui-ci est donc généré normalement, puis à l'appel du plugin assembly, je construis un war avec la lib et le war.

    Je n'oublie pas de retirer du war la lib au format jar (directive unPackOptions/excludes) et le tour est joué.

    Neanmoins, tout n'est pas rose, puisque Maven me fait quelques warning à l'exécution. En effet, il n'aime pas trop que le résultat d'un assembly remplace ce qui est fait par défaut dans le pom.

    Le fichier pom.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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>mon-war</groupId>
        <artifactId>mon-war</artifactId>
        <packaging>war</packaging>
        <name>Maven Webapp</name>
        <url>http://maven.apache.org</url>
        <dependencies>
            <dependency>
                <groupId>mon-jar</groupId>
                <artifactId>mon-jar</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
        </dependencies>
     
        <build>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                            <configuration>
                                 <finalName>nom-du-war</finalName>
                                <descriptors>
                                    <descriptor>./assembly-patch.xml</descriptor>
                                </descriptors>
                                 <appendAssemblyId>false</appendAssemblyId>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
             </plugins>
        </build>
    </project>
    Le fichier assembly-patch.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
    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
      <id>patch</id>
      <formats>
        <format>war</format>
      </formats>
      <includeBaseDirectory>false</includeBaseDirectory>
      <dependencySets>
          <dependencySet>
              <includes>
                    <include>mon-jar:mon-jar</include>
              </includes>
              <unpack>true</unpack>
            <outputDirectory>WEB-INF/classes</outputDirectory>
          </dependencySet>
          <dependencySet>
              <includes>
                    <include>mon-war:mon-war</include>
              </includes>
              <unpack>true</unpack>
              <unpackOptions>
                  <excludes>
                      <exclude>WEB-INF/lib/mon-jar*.jar</exclude>
                  </excludes>
              </unpackOptions>
          </dependencySet>
       </dependencySets>
    </assembly>

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2011
    Messages : 24
    Par défaut
    Ok, c'est une bonne idée comme ça la portabilité est garantie!
    baa bonne chance

  6. #6
    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
    Très bien si tu as pu résoudre ton problème. Mais pour ma culture personnelle, pourquoi souhaites-tu "exploser" ton JAR dans WEB-INF/classes ? Des problèmes avec l'ordre de chargement des classes ?
    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

  7. #7
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Par défaut
    Effectivement, Il s'agit d'un problème dans l'ordre de chargement des classes.

    Suite à une migration d'environnement, nous avons rencontrés des bugs dans des bibliothèques propriétaires. L''éditeur nous a livré un correctif sous forme de classes java à surcharger.

    Je ne peux malheureusement pas les intégrer dans mon projet, puisque ces classes doivent être compilées dans une autre version Java que mon projet.

  8. #8
    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
    A la limite, si ce sont juste des .class auxquelles tu ne toucheras pas, tu peux les stocker dans src/main/resources. Du coup, elle seront déployées "naturellement" dans WEB-INF/classes.

    Reste à voir quelle solution est la moins crade !
    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

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

Discussions similaires

  1. Charger les classes d'un Jar incluses dans un Jar
    Par daronmaster dans le forum Général Java
    Réponses: 2
    Dernier message: 08/06/2009, 22h11
  2. Réponses: 1
    Dernier message: 16/01/2009, 10h14
  3. [ClassLoader]Charger les classes d'un Jar
    Par GLDavid dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2007, 17h22
  4. [Jar] Lister les classes d'un Jar
    Par GLDavid dans le forum Langage
    Réponses: 8
    Dernier message: 13/02/2007, 13h52
  5. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 18h21

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