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][Assembly] génération d'un tar.gz à l'intérieur de l'assembly ?


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut [Maven2][Assembly] génération d'un tar.gz à l'intérieur de l'assembly ?
    Bonjour,
    je cherche grâce au plugin assembly de recréer une arborescence permettant de générer un rpm (avec rpmbuild) tel que les répertoire suivant doivent être créés :
    SOURCES
    SPECS
    RPMS
    SRPMS
    BUILD

    Pour ça c'est bon.
    Le plugin assembly me permet actuellement de déplacer le war de mon application et un script .sh dans le répertoire SOURCES .
    Le problème est que la commande rpmbuild ne prend en tant que sources (dans le rep SOURCES donc) qu'un fichier tar.gz.

    Il faudrait donc que je trouve le moyen de générer un tar.gz du war + script.sh ???? (à l'intérieur du assembly de type dir que je fait déjà)

    La structure finale désirée est

    app-version-idDescriptor.dir
    --SOURCES
    ----"war+script.sh".tar.gz
    --SPECS
    --RPMS
    --SRPMS
    --BUILD

    Voilà mon descriptor :
    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
     
    <assembly>
    	<id>rpm</id>
    	<formats>
    		<format>dir</format>
    		<format>tar.gz</format>
    	</formats>
    	<includeBaseDirectory>true</includeBaseDirectory>
    	<baseDirectory>rpm</baseDirectory>
     
    	<files><!-- Le filemode par défaut est "0644" -->
     
    		<!-- Fichier spec pour la génération du rpm d'application -->
    		<file>
    			<source>
    				${basedir}/src/main/assembly/specs/${artifactId}-application.spec
    			</source>
    			<outputDirectory>/SPECS</outputDirectory>
    			<!-- Cette option permet de remplacer les variables dans le fichier spec par les valeurs contenues dans le pom du projet -->
    			<filtered>true</filtered>
    		</file>
     
    		<!-- Package de l'application -->
    		<file>
    			<source>
    				${basedir}/target/${artifactId}-${version}.war
    			</source>
    			<outputDirectory>/SOURCES</outputDirectory>
    			<fileMode>0644</fileMode>
    		</file>
     
    		<!-- Fichier script pour le déploiement de l'application -->
    		<file>
    			<source>
    				${basedir}/src/main/assembly/scripts/script.sh
    			</source>
    			<outputDirectory>/SOURCES</outputDirectory>
    			<!-- Cette option permet de remplacer les variables dans le fichier spec par les valeurs contenues dans le pom du projet -->
    			<filtered>true</filtered>
    		</file>
     
    		<!-- Création des autres répertoires utilisés par la commande rpmbuild -->
    		<file>
    			<source>${basedir}/src/main/assembly/.rpmmacros</source>
    			<outputDirectory>/</outputDirectory>
    		</file>
     
    		<file>
    			<source>${basedir}/src/main/assembly/readme.txt</source>
    			<outputDirectory>RPMS</outputDirectory>
    		</file>
    		<file>
    			<source>${basedir}/src/main/assembly/readme.txt</source>
    			<outputDirectory>SRPMS</outputDirectory>
    		</file>
    		<file>
    			<source>${basedir}/src/main/assembly/readme.txt</source>
    			<outputDirectory>BUILD</outputDirectory>
    		</file>
    	</files>
    </assembly>

  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
    Tout d'abord, un plugin rpm existe: http://mojo.codehaus.org/rpm-maven-plugin/ , regarde si il peut t'aider.

    Concernant le tar.gz, 2 solutions. La première est de créer un nouveau module créant le tar.gz et dans ton projet qui créer le rpm, tu utilises ce module comme dépendances. La seconde solution est d'appeler le plugin assembly une première fois sur une autre phase afin de créer le tar.gz que tu réutilisera dans l'assembly de creation du rpm.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut
    Merci pour ta réponse evenisse.
    Le plugin rpm je sais qu'il existe mais nous n'avons pas le droit de l'utiliser car il n'est pas assez mature et surtout non validé dans la matrice techno du client donc la dessus y a pas moyen, dommage...

    Je n'ai pas très bien compris ta 1ère solution avec plusieurs modules, pourrait tu détailler et me donner un exemple stp ?
    Par contre le 2ème exemple je crois avoir compris, dans la définition de ton plugin assembly dans le pom, tu redéfinis la phase ou un truc comme ça....?

    Sinon de mon côté j'ai trouvé une solution, j'ai créé 2 fichiers descriptor, le 1er va générer le tar.gz du war+script.sh, et le 2ème va générer la structure pour la génération du RPM. Ensuite dans la définition de ton plugin assembly dans le pom, j'ai mis les 2 descriptor en commençant par celui générant le tar.gz

  4. #4
    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
    Ma deuxième solution correspond à ce que tu as fait mais je trouve qu'il est préférable de générer le tar.gz dans une phase particulière car rien ne t'assure que le plugin assembly prendra toujours la liste des descripteurs dans l'ordre que tu as défini (Ce serait idiot, mais on ne sais jamais )

    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
     
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <executions>
        <execution>
          <phase>generate-resources</phase>
          <configuration>
            conf pour la génération du tar.gz
          </configuration>
        <execution>
        <execution>
          <phase>package</phase>
          <configuration>
            conf pour la génération du rpm
          </configuration>
        <execution>
      </executions>
    </plugin>
    Pour ma solution avec un autre module, c'est plus ou moins le même principe sauf que au lieu de générer le tar.gz à partir du pom qui génère le rpm, tu le génère à partir d'un autre pom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    pom.xml
       module-tar-gz
           pom.xml
       module-rpm
           pom.xml    <-- utilisation de la dépendance module-tar-gz

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut
    Merci encore evenisse, je crois que je vais opter pour ta solution d'application sur les phases qui m'a l'air effectivement plus propre que ce que j'ai fait.

    Merci encore.

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

Discussions similaires

  1. maven assembly génération d'un jar
    Par mat569564 dans le forum Maven
    Réponses: 2
    Dernier message: 26/08/2009, 14h26
  2. Réponses: 5
    Dernier message: 09/05/2007, 09h44
  3. [Maven2]Assembly lié à une phase
    Par Deaf dans le forum Maven
    Réponses: 3
    Dernier message: 27/04/2007, 14h54
  4. [Maven2] génération d'un ear
    Par Palmer dans le forum Maven
    Réponses: 3
    Dernier message: 21/03/2007, 10h02
  5. Réponses: 1
    Dernier message: 20/03/2007, 10h34

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