maven filtering – 메이븐 필터링

■ maven의 필터링은 리소스파일(예를들어 spring의 설정파일)안에 변수를 선언하고 빌드시에 각 빌드환경에 맞게 변수를 치환할 수 있다. ${…} 구분자로 표시하고 커맨드 라인에서 입력할수도 있고 pom.xml에서 속성으로 지정해서 입력할 수도 있다.

■ 참조
Apache Maven Project – Filtering

■ pom.xml의 속성등록 후 치환
1. pom.xml에서 name을 My Resource…로 지정하고 src/main/resources의 filtering속성을 true로 선언한다.

<project>
  ...
  <name>My Resources Plugin Practice Project</name>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>

 
2. 그리고 src/main/resources 디렉토리 안에 임의의 파일 hello.txt를 만들고 ‘${name}’를 입력한다.

${name}

 
3. 빌드를 하면 target 디렉토리안에 생성된 hello.txt의 ${name}은 My Resources Plugin Practice Project로 치환되어있음을 확인할 수 있다. pom.xml안에 변수 지정은 project태그 바로 아래에 지정해도 되고 properties 태그 안에 지정도 가능하다.
 
 
 

■ 커맨드라인에서 maven실행시 변수 지정은 -D옵션으로 지정가능하다.

mvn clean install -Dname="world"

 
 
 

■ 동일한 프로젝트에 필터링되어야 하는 resource디렉토리와 필터링되지 않아야 하는 resource디렉토리가 동시에 존재한다면 필터링되어야 하는 디렉토리는 아래와 같이 filtering true를 추가하면 된다.

<project>
  ...
  <name>My Resources Plugin Practice Project</name>
  ...
  <build>
    ...
    <resources>
      <resource>
        <!-- 필터링되어야 할 디렉토리 -->
        <directory>src/main/resources1</directory>
        <filtering>true</filtering>
      </resource>
      <resource>
        <!-- 필터링 되지 않아야 할 디렉토리 -->
        <directory>src/main/resources2</directory>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>

[/code]
 
 
 

■ 필터링되어야 하는 변수/속성이 많다면 속성파일에 지정도 가능하다. 아래와 같이 filter.properties파일을 생성하고 파일내용에 ‘name=value’형식으로 입력하고 maven빌드를하면 name이 value로 치환된다.

<project>
  ...
  <name>My Resources Plugin Practice Project</name>
  ...
  <build>
    ...
    <filters>
      <filter>src/main/resources/filter.properties</filter>
    </filters>
    ...
  </build>
  ...
</project>
filter.properties의 내용
name3=Xman

 
 
 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다