[Spring] Maven 동적 환경 구성

Maven Properties

pom.xml 파일에서 maven 프로퍼티를 사용하여 동적인 환경 구성이 가능하다.

프로퍼티에는 아래 5가지 종류가 있다.

1. Maven Project Properties

Maven Project Object Model(pom.xml) 에 정의된 값.

prefix. : project.*

ex) ${project.build.outputDirectory}

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>project</artifactId>
    <version>${project.version}</version>
</dependency>

2. Maven Settings Properties

~/.m2/settings.xml 에 정의된 값 사용

prefix : settings.*

3. Environment Variable Properties

환경 변수 값을 참조 할 수 있다.

prefix : env.*

  • 예제

    env.PATH : 현재의 PATH 정보

    env.JAVA_HOME : JDK Home 정보

    env.HOME : 유닉스/리눅스 사용자 HOME 디렉토리

    env.M2_HOME : Maven Home 정보

<!-- mvn antrun:run -->
<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <configuration>
    <tasks>
        <echo>The JAVA_HOME var is ${env.JAVA_HOME}</echo>
    </tasks>
    </configuration>
</plugin>
<!-- [echo] The JAVA_HOME var is C:\Program Files\Java\jdk1.8.0_281 출력된다. --> 

4. Java System Properties

System.getProperty() 메소드에서 제공하는 모든 프로퍼티 정보를 참조할 수 있다.

Java System Properties 설명
java.version JRE의 버전
java.vendor JRE의 vendor 정보
java.home JDK 또는 JRE의 설치 디렉토리
java.vm.specification.version JVM SPEC 버전
java.vm.specification.name JVM SPEC 이름
os.name OS 이름
os.version OS 버전
user.home 사용자 홈 디렉토리
user.name 사용자 이름
user.dir 현재 디렉토리

5. User-defined Properties

아래와 같이 직접 정의해서 사용 할 수 있다.

<project>
    ...
    <properties>
        <env>local</env>
        <clover.home>analysis_tools/clover</clover.home>
        <checkstyle.home>analysis_tools/checkstyle</checkstyle.home>
        <pmd.home>analysis_tools/pmd</pmd.home>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    ...
</project>

Leave a comment