POM.xml에서 환경 변수를 참조하는 방법은 무엇입니까? maven을 빌드 도구로 사용하고 있습니다.

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에서 변수를 명령 줄 매개 변수로 전달하는 것이 었습니다. 설정은 다음과 같습니다.

  1. 쉘 스크립트에서 변수를 설정하십시오. 하위 스크립트에서 Maven을 시작하는 경우 변수가 설정되어 있는지 확인하십시오 (예 : source ./maven_script.sh상위 스크립트에서 변수 를 호출하는 데 사용) .

  2. shared-pom에서 환경 변수를 가져 오는 명령 줄 매개 변수를 만듭니다.

<플러그인>
  ...
  <실행>
    <실행>
    ...
      <실행>
      ...
        <구성>
          <param> $ {foo} </ param> <!-* not * $ {env.foo}->입니다.
        </ configuration>
  1. com.google.code.maven-replacer-plugin에서 교체 값을 확인하십시오 ${foo}.

  2. 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>

답변