Lorsque vous effectuez un mais je ne finis que par la guerre de test. p> p> MVN installer code> Je veux retrouver avec 2 fichiers de guerre dans mon répertoire cible. On contiendra la production forte> forte>
web.xml code> et l'autre contiendra le test
web.xml code>. < P> J'ai essayé ceci: p>
8 Réponses :
Je ne pense pas que vous puissiez le faire en une étape (en fait, je suis surpris que Maven ne se plaint pas de votre configuration et de vous demander lequel est appliqué) et je suggère d'utiliser des profils et peut-être filtrer à Gérer ce cas d'utilisation.
Si votre et définir la propriété si votre puis activez un profil ou l'autre en passant la propriété env de la ligne de commande, par exemple: p> web.xml code> est vraiment différent, vous pouvez simplement mettre votre configuration de plug-in maven-guerre dans deux profils. Ou bien, mieux, vous pouvez les fusionner dans quelque chose comme ceci: p>
env code> dans deux profils pour ramasser le droit
web.xml code> à la durée de construction. p>
web.xml code> est similaire (c.-à-d. Si seules les valeurs diffèrent en eux) Vous pouvez définir des propriétés et leurs valeurs dans deux profils et utiliser le filtrage pour les appliquer. Quelque chose comme ceci: p>
mvn -Denv=uat package
Je pense que cela ne peut être atteint que en écrivant un plug-in Maven personnalisé ou en interférant avec le cycle de vie de construction et en exécutant deux fois le processus d'assemblage de la guerre (ceci est juste une idée fausse). P>
Peut-être que vous pourriez créer deux profils et exécuter le but deux fois avec des profils différents ( MVN -P Package code>,
MVN -P Paquet Prof2 code>), mais faites attention à Les noms d'artefact générés, ils ne devraient pas être écrasés. Ou vous pourrez peut-être créer un plugin personnalisé utilisant d'autres plugins et assemble les deux fichiers de guerre. P>
Je suggérerais généralement d'utiliser des profils et d'exécuter deux constructions dédiées. Cependant, il devrait être possible de créer un nombre quelconque d'artefacts à l'aide du Maven-Assembly-Plugin . P>
pendant que je n'utilise pas Maven mais Ivy à la place, voici comment vous devriez généralement faire cela : p>
Avez-vous votre propre application publiée dans un référentiel privé / similaire à celle de ses dépendances / autres éléments statiques, puis des paramètres de projet individuels pour la construction des guerres spécifiques du déploiement de l'application avec des configurations spécifiques au contexte. Maintenant, en construisant l'un des projets de déploiement individuels, vous obtenez la dernière version de votre application réelle avec ses configurations spécifiques de construction. P>
Je suppose que puisque cela est trivial en lierre, Maven devrait pouvoir le faire aussi facilement. P>
Sort-of-Ugly Hack (il brise l'idée de Maven de déclarer des intentions au lieu d'actions), mais a travaillé pour moi: je devais générer deux guerres qui partageaient la même base de code arrière, mais modifiées sur les packages de contrôleur MVC .
Après avoir frappé ma tête avec plusieurs plugins, j'ai pensé "hé, je le ferais facilement dans la fourmi", ce qui me conduit à utiliser (Pour être juste, je n'ai pas supprimé le fichier d'origine, mais vous devriez être capable de le faire.) P> Dans votre cas, vous pouvez emballer une guerre sans la variante web.xml, renommez / déplacez-la sur le Web.xml d'origine, puis emballer la deuxième guerre. P> P>
Vous pouvez dire au plugin de l'assemblage maven de générer deux assemblages. Vous venez d'écrire un fichier de descripteur d'assemblage pour chaque sortie que vous souhaitez créer et de les énumérer dans la configuration du plug-in.
Par exemple, je l'utilise pour générer un fichier de guerre et un fichier TGZ, mais il n'y a aucune raison pour ne pas faire deux guerres de la même manière. Le paquet MVN générera ensuite les deux fichiers. P>
<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.3</version> <configuration> <descriptors> <descriptor>src/main/assembly/assembly-war.xml</descriptor> <descriptor>src/main/assembly/assembly-dist.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>dist-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
Une ancienne question, mais je veux répondre de manière complète.
Vous pouvez le faire dans une étape de construction très simplement avec le plugin de guerre avec deux exécutions. Voir le code d'exemple ci-dessous: P>
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <executions> <execution> <id>build-context-one</id> <phase>install</phase> <goals> <goal>war</goal> </goals> <configuration> <classifier>context-one</classifier> <webResources> <resource> <filtering>true</filtering> <directory>src/main/webapp</directory> <includes> <include>**</include> </includes> </resource> <resource> <directory>your-context-one-directory</directory> </resource> </webResources> </configuration> </execution> <execution> <id>build-context-two</id> <phase>install</phase> <goals> <goal>war</goal> </goals> <configuration> <classifier>classifier-two</classifier> <webResources> <resource> <filtering>true</filtering> <directory>src/main/webapp</directory> <includes> <include>**</include> </includes> </resource> <resource> <directory>your-context-two-directory</directory> </resource> </webResources> </configuration> </execution> </executions>
plus simple: p>
Il suffit de créer un projet multi-modules. P>
Chaque module aurait l'emballage de la guerre :) p>
Construire du parent POM et VOILA! P>
Voir Stackoverflow. com / questions / 1816006 / ...
Le plug-in de guerre peut être configuré avec plusieurs exécutions, il construira plusieurs artefacts dans un seul "package MVN" comme décrit ici ici: Stackoverflow.com/Questtions/3866784/...