Ich benutze Maven als Build-Tool. Ich habe eine Umgebungsvariable namens gesetzt env
. Wie kann ich auf den Wert dieser Umgebungsvariablen in der pom.xml
Datei zugreifen ?
java
maven
environment-variables
pom.xml
user1016403
quelle
quelle
${env.XYZ}
Referenz als rot. Die Variable wird zur Laufzeit korrekt erweitert, zur Kompilierungszeit jedoch rot angezeigt. Ich habe daher die gleiche Frage, die ursprünglich gestellt wurde.Antworten:
Lesen Sie den Maven Properties Guide ...
Wie Seshagiri in den Kommentaren betonte,
${env.VARIABLE_NAME}
wird er tun, was Sie wollen.Ich werde ein Wort der Warnung hinzufügen und sagen, dass a
pom.xml
Ihr Projekt vollständig beschreiben sollte. Verwenden Sie daher Umgebungsvariablen mit Bedacht. Wenn Sie Ihre Builds von Ihrer Umgebung abhängig machen, sind sie schwerer zu reproduzierenquelle
Es ist möglicherweise sicherer, Umgebungsvariablen direkt an Maven-Systemeigenschaften zu übergeben. Angenommen, Sie möchten unter Linux auf die Umgebungsvariable MY_VARIABLE zugreifen. Sie können eine Systemeigenschaft in Ihrer POM-Datei verwenden.
Legen Sie den Eigenschaftswert in der Maven-Befehlszeile fest:
quelle
Stellen Sie außerdem sicher , dass Ihr Umgebungsvariable ist nur durch Versalienzeichen zusammengesetzt .... Ich weiß nicht , warum (die Dokumentation nicht nichts sagt ausdrücklich darüber, zumindest die Verbindung zur Verfügung gestellt von @ Andrew weiß), aber wenn Die Variable ist ein Kleinbuchstaben (z. B. env.dummy). Die Variable war immer leer oder null.
Ich hatte ungefähr eine Stunde damit zu kämpfen, bis ich mich entschied, einen UPPER CASE VARIABLE auszuprobieren, und das Problem gelöst war.
OK Variablen Beispiele:
( HINWEIS : Ich habe maven v3.0.5 verwendet.)
Ich hoffe, dass dies jemandem helfen kann ....
quelle
Können wir nicht verwenden
quelle
Ich hatte mit der gleichen Sache zu kämpfen, indem ich ein Shell-Skript ausführte, das Variablen setzte, und dann die Variablen im Shared-Pom verwenden wollte. Das Ziel war, dass Umgebungsvariablen Zeichenfolgen in meinen Projektdateien mithilfe des com.google.code.maven-replaceer-Plugins ersetzen.
Verwenden
${env.foo}
oder${env.FOO}
nicht für mich gearbeitet. Maven fand die Variable einfach nicht. Was funktionierte, war die Übergabe der Variablen als Befehlszeilenparameter in Maven. Hier ist das Setup:Legen Sie die Variable im Shell-Skript fest. Wenn Sie Maven in einem Unterskript starten, stellen Sie sicher, dass die Variable festgelegt wird, z. B.
source ./maven_script.sh
um sie über das übergeordnete Skript aufzurufen.Erstellen Sie in shared-pom einen Befehlszeilenparameter, der die Umgebungsvariable erfasst:
Geben Sie im com.google.code.maven-replaceer-Plugin den Ersatzwert ein
${foo}
.Fügen Sie in meinem Shell-Skript, das maven aufruft, dies dem Befehl hinzu:
-Dfoo=$foo
quelle
Mit dem
<properties>
Tag können Sie eine benutzerdefinierte Variable und ein${variable}
Muster definieren, um sie zu verwendenquelle