41 votes

Modification de l'emballage en fonction du profil actif dans pom

J'ai un projet que je compile avec maven. J'ai différents profils déclarés dans pom.xml. Pour certains de ces profils, je préfère construire une guerre, et pour d'autres profils je préfère un bocal. J'utilise pour éditer manuellement le fichier pom.xml et changer la variable d'emballage en soit

 <packaging>war</packaging>

ou

 <packaging>jar</packaging>

avant de faire un

 $ mvn clean package -Pchosenprofile

Comment puis-je indiquer à mvn le packaging correspondant à chaque profil pour que je n'aie pas besoin de modifier pom.xml ?

121voto

Torres Points 1641

Si vous souhaitez utiliser le profil, vous pouvez utiliser quelque chose comme :

 <?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>
    ..
    <packaging>${packaging.type}</packaging>

    <profiles>
        <profile>
            <id>webapp</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <packaging.type>war</packaging.type>
            </properties>
        </profile>
        <profile>
            <id>batch</id>
            <properties>
                <packaging.type>jar</packaging.type>
            </properties>
                </profile>
          </profiles>
</project>

4voto

Jörn Horstmann Points 18118

Avez-vous regardé le paramètre de configuration attachClasses du plugin war ? Ce paramètre simple vous permettrait de construire à la fois une guerre et un jar (par défaut avec le classificateur "classes") en une seule exécution maven.

1voto

ptyx Points 1788

Je ne pense pas que tu puisses.

Deux alternatives auxquelles je peux penser:

  • avoir deux modules séparés pour l'emballage, et appeler l'un de ceux-ci en fonction du profil
  • avoir votre module en guerre et ajuster le cycle de vie (inclure/exclure les étapes de construction) en fonction du profil pour produire votre jar ou votre guerre

J'aime mieux la deuxième approche - un serveur de build construirait probablement les deux, et un développeur utiliserait les profils/paramètres appropriés pour ignorer le type indésirable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X