아파치 메이븐을 이용하여 개발환경을 구성하는 경우 로컬, 스테이지 그리고 운영별로 사실상 개발환경이 조금씩 다르기 때문에 이에 따른 Maven 구성을 해줘야 하는데 이때 필요한것이 POM 구성에서

<!--[if !supportLists]-->§  <!--[endif]-->Filter 설정

<!--[if !supportLists]-->§  <!--[endif]-->Profile 설정

<!--[if !supportLists]-->§  <!--[endif]-->Resource 설정

각각 해줘야하는데, 이때 다소 문제가 되는것은 내가 직접 구성한 바로는 이클립스 상의 플러그인 (M2E - Maven Integration for Eclipse) 문제가 있는것인지 이클립스 상에서 문제가 있는것인지, 아니면 내가 파악 못해서 그러는 것이 있는지 안되는 부분이 있어 고육지책으로 설정한 방법을 정리해 본다.

 

우선 문제가 되는 부분은 이클립스 상에서 해당 Profile 선택하여 실행하는 경우 먹히지 않는 다는 것이다.



프로 파일 옵션을 주어서 “local” 프로파일을 선택했으면 local에대한 프로파일이 적용되어 실행되어야하고, “real” 프로파일을 선택했으면 “real”프로 파일이 적용되어 실행되어야 하지만 그렇지가 않고<activeProfiles> 엘리먼트에서 지정한 프로파일이 적용되고 지정되는 프로파일은 아무 쓸모가 없었다.

하지만 이것은 문제가 될것 같지 않아 다음과 같은 방법으로 설정 하였다.

 


<!--[if !supportLists]-->1.  Filter 설정

다음과 같이 “local” “real”프로파일 적용을 위해서 두개의 파일을 구성하였다.

<!--[endif]-->


위의 파일에서는 데이터베이스  접속정보라든가 로그를 만들 디렉토리등 속성파일을 key=value값으로 구성 했다.

<!--[endif]-->



 

<!--[if !supportLists]-->2.  Profile 설정과 Resource 설정

다음과 같이 POM파일에 내용을 추가한다. 

<build>

     <finalName>cosmos</finalName>

     <resources>

         <resource>

             <directory>src/main/resources/config/env</directory>

             <filtering>true</filtering>

         </resource>

     </resources>

     <filters>

         <filter>src/main/filters/config-${environment}.properties</filter>

     </filters>

 </build>

 

 <profiles>

     <profile>

         <id>local</id>

         <properties>

             <environment>local</environment>

         </properties>

     </profile>

     <profile>

         <id>real</id>

         <properties>

            <environment>real</environment>

         </properties>

     </profile>

 </profiles>



<!--[if !supportLists]-->3.  <!--[endif]-->~/.m2/settings.xml 파일 구성

위와 같이 필터 파일을 구성하고 적용될Resource Profile 설정하면 이클립스에서 지정하는 프로파일 대로 적용될줄 알았지만 그렇게 되지 않았다.

그래서 ~/.me2/settings.xml 파일에  아래와 같이 설정하면 계속 기본 값으로 local 프로 파일이 적용된다.

<activeProfiles >

        <activeProfile>local</activeProfile>

</activeProfiles>

 

 기대 하는것 처럼  파일에서 real 바꾸면 real Profile 적용될줄 알았지만 프로젝트를 Close하고 다시 Open하거나 이클립스를 시작 하지 않아면 적용 되지 않았다.

하지만 콘솔 상에서 하는것은 적용이 된다.

C:\Workspace\cosmos.webapp>mvn install -P real

 


<!--[if !supportLists]-->4. <!--[endif]-->정리

어찌 하였든 로컬에서는 어차피 로컬 환경으로 계속 개발하면서 SVN이나 Git 같은 중앙저장소로 소스를 보내서 해당 서버에서 패키징 하면 될것이고 실제 적용할 서버에서 settings.xml real 같이 실제 환경만 잡아 주면 되므로 이와 같이하면 크게 문제 될것이 없을 같다.

 

로컬에서도 real환경으로 패키징 해야하는 경우면 settings.xml파일을 수정 프로젝트를 닫고 다시 열거나 이클립스를 시작하여 적용하면 문제가 없겠다.

'DevOps' 카테고리의 다른 글

XShell을 이용한 Amazon Web Service (AWS) Connection  (0) 2014.09.27
Git/Github를 이용한 형상관리  (0) 2014.07.08
Tomcat 서버의 Multi Instance 설정  (0) 2014.04.29
Basic of JUnit 4  (0) 2014.04.22
Succeeding With Agile  (0) 2014.04.19
Posted by Steven J.S Min
,