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 :

Comment paramétrer un plugin ?


Sujet :

Maven Java

Vue hybride

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Par défaut Comment paramétrer un plugin ?
    Bonjour,

    J'ai un projet web et j'aimerais copier le war issu de la compilation (mvn package) à un endroit spécifique suivant un paramètre. Par exemple, si j'indique "dev", le war est copié dans le répertoire de déploiement du serveur installé sur ma machine de développement. Si j'indique "preprod", le war est copié sur un serveur distant pour recette. Et si j'indique "prod", le war est copié sur un autre serveur (pourquoi pas sur la même machine).

    J'ai actuellement quelque chose qui fonctionne bien pour le premier cas ("dev") quand je fais un simple mvn package. J'ai dans mon pom.xml :
    Code xml : 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
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <configuration>
                            <tasks>
                                <copy file="target/monWar.war"
                                    todir="chemin vers mon serveur local">
                                </copy>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    Je souhaiterais paramétrer maven-antrun-plugin pour une phase donnée de manière à ce qu'il ne me reste plus qu'à faire quelque chose comme mvn package dev, mvn package prod, ou mvn package prod.

    J'ai vu qu'il existait un plugin deploy et release, mais je suis pas vraiment sûr que ce soit bien adapté...

    Pouvez-vous m'aider ?

    Merci !

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    Regarde du côté des profiles. Tu peux créer un profile "prod", un "preprod" et un "dev" et activer celui que tu veux dans ta ligne de commande:

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Par défaut
    Super ça marche ! Merci !

    Par contre, j'aimerais faire quelque chose d'un peu particulier. J'aimerais ne pas inclure le chemin de destination du war directement dans le pom.xml, puisque chaque développeur sa propre installation de Tomcat, avec éventuellement un chemin différent. Donc j'aimerais paramétrer encore un peu le pom.xml à l'aide du fichier settings.xml de chaque développeur. On aurait ainsi un pom.xml commun à tous les déveoppeurs, et un settings.xml propre à chaque developpeur.

    J'ai pour l'instant dans mon pom.xml :
    Code xml : 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
    <project>
        ...
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <configuration>
                                <tasks>
                                    <!-- Le paramètre toDir change en fonction du profile sélectionné -->
                                    <copy file="target/monWar.war"
                                        todir="${liferayDeployPath}">
                                    </copy>
                                </tasks>
                            </configuration>
                            <goals>
                                <goal>run</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
     
        <profiles>
            <profile>
                <id>dev</id>
                <properties>
                    <!-- on va chercher les paramètres dans settings.xml de l'utilisateur -->
                    <liferayDeployPath>${dev-liferayDeployPath}</liferayDeployPath>
                    <liferayUtilBridgeLibrary>${dev-liferayUtilBridgeLibrary}</liferayUtilBridgeLibrary>
                </properties>
            </profile>
     
            <profile>
                <id>preprod</id>
                <properties>
                    <!-- on va chercher les paramètres dans settings.xml de l'utilisateur -->
                    <liferayDeployPath>${preprod-liferayDeployPath}</liferayDeployPath>
                    <liferayUtilBridgeLibrary>${preprod-liferayUtilBridgeLibrary}</liferayUtilBridgeLibrary>
                </properties>
            </profile>
     
            <profile>
                <id>prod</id>
                <properties>
                    <!-- on va chercher les paramètres dans settings.xml de l'utilisateur -->
                    <liferayDeployPath>${prod-liferayDeployPath}</liferayDeployPath>
                    <liferayUtilBridgeLibrary>${prod-liferayUtilBridgeLibrary}</liferayUtilBridgeLibrary>
                </properties>
            </profile>
        </profiles>
    </project>

    Et mon seetings.xml
    Code xml : 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
    <settings>
        ...
     
        <profile>
            <id>dev</id>
            <properties>
                <dev-liferayDeployPath>chemin/vers/tomcat-dev/deploy</dev-liferayDeployPath>
                <dev-liferayUtilBridgeLibrary>chemin/vers/la/librairie/util-bridges.jar</dev-liferayUtilBridgeLibrary>
            </properties>
        </profile>
     
        <profile>
            <id>preprod</id>
            <properties>
                <preprod-liferayDeployPath>chemin/vers/tomcat-preprod/deploy</preprod-liferayDeployPath>
                <preprod-liferayUtilBridgeLibrary>chemin/vers/la/librairie/util-bridges.jar</preprod-liferayUtilBridgeLibrary>
            </properties>
        </profile>
     
        <profile>
            <id>prod</id>
            <properties>
                <prod-liferayDeployPath>chemin/vers/tomcat-prod/deploy</prod-liferayDeployPath>
                <prod-liferayUtilBridgeLibrary>chemin/vers/la/librairie/util-bridges.jar</prod-liferayUtilBridgeLibrary>
            </properties>
        </profile>
     
        ...
    </settings>

    Tout fonctionne à merveille. Sauf que maintenant, j'aimerais que le profile dev soit exécuté par défaut si aucun profile n'est précisé. J'ajoute donc la balise <activeByDefault> pour le profile dev dans mon pom.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        ...
    <profile>

    Lorsque je fais mvn package, apparemment les champs ${dev-liferayDeployPath} et ${dev-liferayUtilBridgeLibrary} ne sont pas remplacés par les valeurs indiquées dans settings.xml. Existe-t-il un caractère d'échappement ? Ou peut-être que je ne fais pas les choses de la bonne manière...

  4. #4
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Tu peux aussi créer un profile par utilisateur qui s'active en fonction de la propriété ${user.name} où chacun renseignera ses chemins.

    Personnellement, je n'aime pas trop l'idée de mettre des propriétés dans le settings qui n'ont pas de rapport avec la configuration de maven (repository, proxy, ...).
    Là, c'est typiquement de la conf projet, donc sa place est dans le pom.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Par défaut
    Oui je comprends. J'avoue que je suis nouveau dans le monde Maven.

    Quand tu dis "un profile par utilisateur", tu veux dire un profile dev, un profile preprod, et un profile prod par utilisateur ? Si oui, mon pom.xml va devenir énorme non ?

  6. #6
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Non et oui

    Un pom, ça peut vite grossir, c'est sûr.
    La plupart du temps, un projet est rarement 'seul', il hérite d'un autre pom parent dans lequel on définit pas mal de choses pour alléger les pom fils.
    Mais le tout, c'est que cela soit bien documenté. Un pom est assez structuré pour pouvoir accéder aux infos qui nous intéresse directement.

    Sinon, ce que je proposais, c'est de faire
    - un profile dev, pre-prod, etc. commun à tous les dev d'un côté
    - un profile par developpeur de l'autre.
    Donc les profiles s'ajoutent, ils ne se multiplient pas, ce qui limite la casse

    En fait, dans tes profiles dev (...) tu spécifies le chemin de déploiement en fonction du type d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <liferayDeployPath>${preprod-liferayDeployPath}</liferayDeployPath>
    ça tu le fait déjà très bien.

    Ensuite, dans chaque profile utilisateur, tu définis les valeurs de ces variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <preprod-liferayDeployPath>/home/toto/preprod</preprod-liferayDeployPath>
    <prod-liferayDeployPath>/home/toto/prod</prod-liferayDeployPath>
    ...
    ça te semble plus clair?

Discussions similaires

  1. [Plugin][VE]Comment installer un plugin ?
    Par Smalljim dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 15/02/2006, 19h38
  2. [ODBC][Delphi5] Comment paramétrer ma connection ?
    Par aitallaoua dans le forum Paradox
    Réponses: 1
    Dernier message: 21/12/2005, 21h32
  3. Comment paramétrer un groupe d'option
    Par lou.souleu dans le forum Access
    Réponses: 8
    Dernier message: 17/09/2005, 06h30
  4. Réponses: 13
    Dernier message: 16/03/2005, 11h29

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