[java] POM.xml에서 환경 변수를 참조하는 방법은 무엇입니까?

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>


답변