maven을 빌드 도구로 사용하고 있습니다. 라는 환경 변수를 설정했습니다 env
. pom.xml
파일 에서이 환경 변수의 값에 액세스하려면 어떻게 해야합니까?
답변
Maven 속성 가이드를 확인하십시오 …
의견에서 세 샤기 리가 지적했듯이 ${env.VARIABLE_NAME}
원하는 것을 할 것입니다.
경고 단어를 추가하고 pom.xml
프로젝트를 완전히 설명해야 한다고 말하면서 환경 변수를 신중하게 사용하십시오. 빌드를 환경에 의존하게 만들면 재현하기가 더 어렵습니다.
답변
환경 변수를 maven 시스템 속성에 직접 전달하는 것이 더 안전 할 수 있습니다. 예를 들어 Linux에서는 환경 변수 MY_VARIABLE에 액세스하려고합니다. pom 파일에서 시스템 속성을 사용할 수 있습니다.
<properties>
...
<!-- Default value for my.variable can be defined here -->
<my.variable>foo</my.variable>
...
</properties>
...
<!-- Use my.variable -->
... ${my.variable} ...
maven 명령 행에서 특성 값을 설정하십시오.
mvn clean package -Dmy.variable=$MY_VARIABLE
답변
또한 환경 변수 가 대문자로만 구성되어 있는지 확인하십시오 …. 이유는 모르겠습니다 (문서에 대해서는 @Andrew White가 제공 한 링크는 명시 적으로 말하지 않습니다). 변수는 소문자 단어 (예 : env.dummy)이며 변수는 항상 비어 있거나 null입니다 …
나는 대문자와 같은 변수를 시도하기로 결정하고 문제가 해결 될 때까지 한 시간처럼 이것으로 어려움을 겪고있었습니다.
OK 변수 예 :
- 가짜의
- DUMMY_ONE
- JBOSS_SERVER_PATH
( 참고 : maven v3.0.5를 사용하고있었습니다)
나는 이것이 누군가를 도울 수 있기를 바랍니다 ….
답변
우리는 사용할 수 없습니다
<properties>
<my.variable>${env.MY_VARIABLE}</my.variable>
</properties>
답변
나는 똑같은 문제로 변수를 설정하는 쉘 스크립트를 실행 한 다음 shared-pom에서 변수를 사용하려고했습니다. com.google.code.maven-replacer-plugin을 사용하여 프로젝트 파일의 환경 변수를 문자열로 바꾸는 것이 목표였습니다.
나를 사용 ${env.foo}
하거나 ${env.FOO}
작동하지 않았습니다. 메이븐은 변수를 찾지 못했습니다. 작동 한 것은 Maven에서 변수를 명령 줄 매개 변수로 전달하는 것이 었습니다. 설정은 다음과 같습니다.
-
쉘 스크립트에서 변수를 설정하십시오. 하위 스크립트에서 Maven을 시작하는 경우 변수가 설정되어 있는지 확인하십시오 (예 :
source ./maven_script.sh
상위 스크립트에서 변수 를 호출하는 데 사용) . -
shared-pom에서 환경 변수를 가져 오는 명령 줄 매개 변수를 만듭니다.
<플러그인> ... <실행> <실행> ... <실행> ... <구성> <param> $ {foo} </ param> <!-* not * $ {env.foo}->입니다. </ configuration>
-
com.google.code.maven-replacer-plugin에서 교체 값을 확인하십시오
${foo}
. -
maven을 호출하는 쉘 스크립트에서 다음을 명령에 추가하십시오.
-Dfoo=$foo
답변
당신이 사용할 수있는 <properties>
사용자 정의 변수와 정의 태그를 ${variable}
사용하는 패턴을
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<!-- define -->
<properties>
<property.name>1.0</property.name>
</properties>
<!-- using -->
<version>${property.name}</version>
</project>