L'Activation de maven profil basé sur de multiples propriétés
Je suis entrain de créer un maven 2 construire pour un projet et je suis venu avec des profils depuis la construction doit être créé pour les deux endroits différents (Berlin, Paris, Pôle Nord) et les différents environnements (Développement, Production). Ceux-ci sont spécifiés via les propriétés. Donc, pour "Pôle Nord", les "DEV" je n':
-Dlocation=NorthPole -Denvironment=DEV
Maintenant, je voudrais acivate mon porfile basé sur ces deux propriétés, pas seulement un. J'ai donc essayé suivantes:
<profiles>
<profile>
<id>NOrth Pole DEV</id>
<activation>
<property>
<name>location</name>
<value>NorthPole</value>
</property>
<property>
<name>environment</name>
<value>DEV</value>
</property>
</activation>
... <!-- Set some North Pole DEV specific stuff -->
</profile>
</profiles>
Cela ne fonctionne pas, maven s'attendre à voir au plus un <property>
élément là.
Veuillez noter que j'ai une autre utilisation pour les propriétés ainsi donc, la rendant unique propriété locationEnv
de valeur NorthPole-DEV
n'est pas ce que je veux avoir.
Donc est-il un moyen ou une solution de contournement ou tout autre chose comment faire pour activer un profil basé sur une combinaison de propriétés?
- Vous êtes l'activation de Construction Profils formulaire en ligne de commande avec profil de multiples id avec propriété système
-D
mvn install -Dactivationprop1 -Dactivationprop2
, la réponse montre à l'aide de-P
mvn install -P profileid1 -Pprofileid2
, uingcomma-delimited list
formulaire de PowerShellmvn install -P "profile-1,profile-2"
.
Vous devez vous connecter pour publier un commentaire.
pourquoi ne pas utiliser directement au profil comme:
Maintenant, vous pouvez activer les profils en ligne de commande.
Je crains qu'il n'y est pas de bonne solution à votre problème (à moins qu'il y a de nouveaux Maven fonctionnalités que je ne suis pas au courant).
En théorie, on pourrait introduire un dérivé de propriété dont la valeur est concaténé à partir de les deux propriétés que vous avez énumérés. Cependant, le problème est que les profils sont évaluées avant les propriétés définies dans le pom, donc, un tel dérivé de propriété ne peut pas être utilisé pour activer un profil 🙁
La meilleure solution je pense pour un problème similaire a été pour activer le profil explicitement, et de mettre les différentes combinaisons de paramètres de ligne de commande en lot séparé/les fichiers de script pour rendre l'exécution plus simple et d'éviter les erreur de frappe questions.
Solution Possible
Essayer cette extension: https://github.com/kpiwko/el-profile-activator-extension
Ce qui permet d'avoir une telle syntaxe:
Je n'ai pas essayé moi-même, mais semble être un bon projet.
Comment éviter le manuel de configuration de Maven
Vous avez besoin de mettre le besoin de deux pots de, le projet en $MAVEN_HOME/lib/ext. Vous pouvez cependant automize leur configuration. Comme ceci:
Testé profil:
khmarbaise la réponse semble plus élégant de moi.
Jan commentaire, vous pouvez consulter le fichier en ajoutant l'properites
par exemple avec le profil de dev, Pôle Nord est activé, vous pouvez vous référer à NorthPole-dev.xml avec
${location}-${env}.xml.
Je devais poster une autre réponse que je ne suis pas en mesure d'ajouter des commentaires à d'autres réponses. 🙁
Je crois que vous pouvez faire quelque chose comme ceci
De couse, pour activer un profil, vous pouvez ajouter dans la commande '-P=dev Pôle Nord'
Après une enquête exhaustive, j'ai posté une vidéo où j'explique l'utilisation de profils Maven par l'environnement avec le Printemps de Démarrage. C'est un printemps de démarrage de repos projet de gérer les propriétés de l'application par l'environnement en utilisant des profils Maven.
Voici les liens:
Youtube: https://youtu.be/UbDpvh3YvDw
Github: https://github.com/carlosCharz/mavenprofilespringboot
Extrait de Code:
Les paramètres de l'Application
personnalisé.server_url = @personnalisée.server_url@
personnalisé.server_port = @personnalisée.server_port@
personnalisé.debuggable = @personnalisée.debuggable@
personnalisé.image_quality = HAUTE
Remplace les paramètres de
personnalisé.server_url = api-dev.yourserver.com
personnalisé.server_port = 80
personnalisé.debuggable = true
Laissez-moi savoir si cela a fonctionné! Gretings!