Estou usando o maven como ferramenta de construção. Eu configurei uma variável de ambiente chamada env
. Como posso acessar o valor dessa variável de ambiente no pom.xml
arquivo?
java
maven
environment-variables
pom.xml
user1016403
fonte
fonte
${env.XYZ}
referência em vermelho. A variável é expandida corretamente no tempo de execução, mas é mostrada em vermelho no tempo de compilação. Portanto, tenho a mesma pergunta que foi originalmente feita.Respostas:
Confira o Guia de propriedades do Maven ...
Como Seshagiri apontou nos comentários,
${env.VARIABLE_NAME}
fará o que quiser.Vou adicionar uma palavra de aviso e dizer que a
pom.xml
deve descrever completamente seu projeto, portanto, use variáveis de ambiente criteriosamente. Se você criar suas construções dependentes do seu ambiente, elas serão mais difíceis de reproduzirfonte
Pode ser mais seguro passar diretamente as variáveis de ambiente para as propriedades do sistema. Por exemplo, digamos no Linux que você deseja acessar a variável de ambiente MY_VARIABLE. Você pode usar uma propriedade do sistema no seu arquivo pom.
Defina o valor da propriedade na linha de comando maven:
fonte
Além disso, verifique se sua variável de ambiente é composta apenas por LETRAS MAIÚSCULAS ... Não sei por que (a documentação não diz nada explícito sobre ela, pelo menos o link fornecido por @Andrew White), mas se a variável é uma palavra minúscula (por exemplo, env.dummy), a variável sempre veio vazia ou nula ...
Eu estava lutando com isso por uma hora, até que decidi tentar uma VARIAÇÃO SUPERIOR DE CASO, e o problema foi resolvido.
Exemplos de variáveis OK:
( NOTA : eu estava usando o maven v3.0.5)
Espero que isso possa ajudar alguém ....
fonte
Não podemos usar
fonte
Eu estava lutando com a mesma coisa, executando um script de shell que definia variáveis e depois queria usá-las no pom-shared. O objetivo era fazer com que as variáveis de ambiente substituíssem as strings nos arquivos do meu projeto usando o com.google.code.maven-replaceer-plugin.
Usando
${env.foo}
ou${env.FOO}
não funcionou para mim. Maven simplesmente não estava encontrando a variável. O que funcionou foi passar a variável como um parâmetro de linha de comando no Maven. Aqui está a configuração:Defina a variável no script de shell. Se você estiver iniciando o Maven em um sub-script, verifique se a variável está sendo definida, por exemplo, usando-o
source ./maven_script.sh
para chamá-lo a partir do script pai.No shared-pom, crie um parâmetro da linha de comandos que pegue a variável de ambiente:
No com.google.code.maven-replaceer-plugin, faça o valor de substituição
${foo}
.No meu script de shell que chama maven, adicione isso ao comando:
-Dfoo=$foo
fonte
Você pode usar a
<properties>
tag para definir uma variável personalizada e um${variable}
padrão para usá-lafonte