반응형

어플리케이션을 하나 출시하기 위해서, 세팅되는 작업환경은 보통 아래와 같을 것이다.

Local, Dev, QA, Live

 

보통 DB정보와, Server to Server를 이용하는 API의 URL은 각 환경마다 다를 가능성이 매우 크다.

하지만, 매번 배포할때마다 이것을 수정하는 것은 매우 귀찮은 일이고, 비효율적이다.

(물론 이렇게 쓰는사람이 있을까 싶긴 하다;;)

 

Maven의 Profile 관리 기능과 War Plugin을 이용하면, 매우 편리하게 설정파일 등을 폴더에 넣어두고

각 환경에 맞게 -P 옵션만으로, 원하는 환경이 세팅되게 하는 것이 가능하다.

 

[pom.xml]


<profiles>
     <profile>
          <id>dev</id>
          <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-war-plugin</artifactId>
                        <configuration>
                            <containerConfigXML>src/main/webapp/META-INF/dev/context.xml</containerConfigXML>
                            <webResources>
                                <resource>
                                    <directory>src/main/webapp/META-INF/dev</directory>       <!-- 현재 프로젝트의 폴더 위치 -->
                                    <filtering>true</filtering>     <!-- 여기서는 그냥 true인데, 특정 파일만을 필터링 하는 기능도 지원 -->
                                    <targetPath>META-INF</targetPath>     <!-- 배포가 된 후 폴더의 위치  -->
                                </resource>
                            </webResources>
                        </configuration>
                    </plugin>
                </plugins>
            </build> 
     </profile>
     ... 
</profiles> 

 

대충 위와 같이 context설정은 가능하고, properties나 logging관련 파일들도 resource element를 만들어서 참조하게 하면,

-P 만으로 각 환경에 맞게 리소스가 컨트롤이 가능함.

 

작년에 했던 것들인데 이제서야 정리... 

반응형
,