J'utilise maven comme outil de construction. J'ai défini une variable d'environnement appelée env
. Comment puis-je accéder à la valeur de cette variable d'environnement dans le pom.xml
fichier?
java
maven
environment-variables
pom.xml
utilisateur1016403
la source
la source
${env.XYZ}
référence en rouge. La variable est correctement développée au moment de l'exécution, mais s'affiche en rouge au moment de la compilation. J'ai donc la même question qui a été posée à l'origine.Réponses:
Consultez le guide des propriétés Maven ...
Comme Seshagiri l'a souligné dans les commentaires,
${env.VARIABLE_NAME}
fera ce que vous voulez.Je vais ajouter un mot d'avertissement et dire que cela
pom.xml
devrait décrire complètement votre projet, veuillez donc utiliser judicieusement les variables d'environnement. Si vous rendez vos builds dépendants de votre environnement, ils sont plus difficiles à reproduirela source
Il peut être plus sûr de passer directement les variables d'environnement aux propriétés système maven. Par exemple, disons sous Linux que vous souhaitez accéder à la variable d'environnement MY_VARIABLE. Vous pouvez utiliser une propriété système dans votre fichier pom.
Définissez la valeur de la propriété sur la ligne de commande maven:
la source
Assurez-vous également que votre variable d'environnement est composée uniquement de LETTRES MAJUSCULES ... Je ne sais pas pourquoi (la documentation ne dit rien d'explicite à ce sujet, au moins le lien fourni par @Andrew White), mais si la variable est un mot minuscule (par exemple env.dummy), la variable est toujours venue vide ou nulle ...
J'avais du mal avec ça pendant une heure, jusqu'à ce que je décide d'essayer une VARIABLE DE CAS SUPÉRIEUR, et le problème est résolu.
Exemples de variables OK:
( REMARQUE : j'utilisais maven v3.0.5)
J'espère que cela peut aider quelqu'un ...
la source
Ne pouvons-nous pas utiliser
la source
J'avais du mal avec la même chose, exécutant un script shell qui définissait des variables, puis voulant utiliser les variables dans le shared-pom. L'objectif était de faire en sorte que les variables d'environnement remplacent les chaînes dans mes fichiers de projet à l'aide du plugin com.google.code.maven-replacer-plugin.
Utiliser
${env.foo}
ou${env.FOO}
n'a pas fonctionné pour moi. Maven ne trouvait tout simplement pas la variable. Ce qui fonctionnait, c'était de passer la variable en tant que paramètre de ligne de commande dans Maven. Voici la configuration:Définissez la variable dans le script shell. Si vous lancez Maven dans un sous-script, assurez-vous que la variable est définie, par exemple en utilisant
source ./maven_script.sh
pour l'appeler depuis le script parent.Dans shared-pom, créez un paramètre de ligne de commande qui saisit la variable d'environnement:
Dans com.google.code.maven-replacer-plugin, définissez la valeur de remplacement
${foo}
.Dans mon script shell qui appelle maven, ajoutez ceci à la commande:
-Dfoo=$foo
la source
Vous pouvez utiliser une
<properties>
balise pour définir une variable personnalisée et un${variable}
modèle pour l'utiliserla source