본문 바로가기

프로그래밍

[maven] maven-resources-plugin을 이용한 properties.xml 별도 배포

여러 상황에 맞는 프로퍼티 내용을 배포 후에도 수정하고 바로 적용 시키는 걸 위해서 기존에 jar에 담아 배포하던

properties 관련 xml파일을 분리 배포하는 방법을 찾았었다.ㅏ

jar 에 포함되면 propertie조금 바꿨다고 다시 배포본을 말고, 그걸 다시 배포하고 하는 쓸데 없는 일이 자꾸 벌어진다..

배포하는 용도에 따라서 분리해서 배포해내고도 싶었다.

그래서 이용하게 된 것이 maven-resources-plugin이다.

배포본 생성 시에 파라미터를 통해 어떤 것을 분리해서 복사할 지를 정하게도 했다.

pom.xml에 아래 처럼 maven-resources-plugin의 설정 정보를 입력했다.

 <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <executions>
      <execution>
      <id>copy-resources</id>
      <phase>validate</phase>
      <goals>
      <goal>copy-resources</goal>
      </goals>
      <configuration>
      <encoding>UTF-8</encoding>
      <outputDirectory>${basedir}/target/config/properties</outputDirectory>
      <resources>
    <resource>
    <directory>src/main/resources/config/properties/${deploy.phase}</directory>
    <filtering>true</filtering>
    <includes>
    <include>**/*.xml</include>
    </includes>
    </resource>
    </resources>
      </configuration>
      </execution>
      </executions>
      </plugin>

bold처리한 부분들이 조금 설정하다가 햇갈렸던 부분들이다.
maven도 따로 시간을 내서 이것 저것 해보고 좋은 방법들을 뽑아놔야되는데, 일단은 기초 재점검중이라 미루기로하다보니
일이 그때그때 찾아하는 상황이다.. 또까먹고 또찾기전에 이렇게 적어놔야겠다.

기본 프로젝트 구조가 
src/main/java에는 소스를
src/main/resources에는 설정 정보를 담았다

여기서 resources하위에 config 또 그 아래 properties에 properties관련 xml파일을 갖고 있었다.


여기서 properties하위 에는 상황별 그러니까 위에다 xml에 적어놓은 것중 ${deploy.phase}를 통해 어떤 디렉터리의 
xml 을 가져올지 정한다.
아래가 변수를 설정한 내용이다. IDE는 Eclipse


Parameter Name에 사용할 변수 그리고 value 에 내가 넣고자하는 내용을 넣었다.
결국은 properties디렉터리 아래 self에 있는 xml을 배포한 jar의 위치에 config/properties/디렉터리에 
복사해서 넣어둔다.


이 xml 파일을 불러와서 실행하게끔 설정하려면?


이런식으로 file:./config/properies/application-properties.xml
을 불러오면 된다. 
실행할 jar가 있는 위치에 상대적으로 불러오게끔
나중에 또 쓸일이 있길바라며