운영시에 사용할 설정과 배포할 때 사용할 설정이 다르다. 어떻게 해야할까요? 예전에도 이 고민을 한적이 있었는데 마침 윤석군이랑 봄싹에 구글 캐린더 연동 서비스를 구현했는데 이런 상황이 또 발생했습니다.
개발 할때 사용할 구글 캘린더와 실제 운영시 사용할 구글 캘린더는 달라야 합니다. 혹은 개발 할 때는 캘린더 서비스를 무시할 수도 있어야 하는데 이 경우는 일단 제외하고 우선은 설정을 환경에 따라 구분해야 한다는 것에 초점을 맞췄습니다.
설정 정보가 구체적으로 어떻냐에 따라 방법도 달라질 수 있는데 이전에 봄싹에 적용한 방법은 다음과 같습.. 흠... 아닙니다.. 귀찮군요. 그냥 생략하고 메이븐 프로파일이나 정리하겠습니다. 어쨋든 이전에 사용한 방법은 메이븐을 사용하지 않은 방법이었는데.. 그게 다 장,단점이 있습니다.
이번에 사용할 방법은 메이븐 프로파일을 사용합니다.
일단 폴더를 저런식으로 구분했는데 뭐 저런 구조야 맘대로 정하시면 되겠죠. 중요한건 개발시 사용할 설정파일이 담겨있는 폴더와 운영시 사용할 설정파일이 담겨있는 폴더를 구분했다는 것 정도..
이제 pom.xml에서 <build> 부분에 개발시 사용할 설정이 담겨있는 폴더를 소스 리소스 폴더로 인식하도록 설정해 줍니다.
<build>
...
<resources>
...
<resource>
<directory>${project.basedir}/resources/development</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
...
</build>
이렇게 말이죠. 대충 엘리먼트 이름만 봐도 아실테니 설명은 패스.
다음은 운영 환경에서는 저 폴더가 아니라 다른 폴더를 리소스 폴더로 등록해줘야 합니다. 따라서 pom.xml에 프로파일을 추가해 주고 그 안에서 재정의할 설정을 넣어주면 됩니다.
<profiles>
<profile>
<id>production</id>
<build>
<resources>
...
<resource>
<directory>${project.basedir}/resources/production</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build>
</profile>
</profiles>
자 요렇게 해주면 더 프로파일을 가지고 빌드 할때는 운영시 사용할 설정 파일이 담겨있는 폴더를 소스 리소스 폴더로 인식해서 그 안에 있는 .java 파일을 제외한 모든 파일을 배포해줍니다.
마지막으로.. 그럼 저 프로파일을 가지고 빌드 하는 방법은?
mvn clean install -Pproduction -X
요런식으로 mvn을 실행할 때 -P프로파일명 을 주시면 됩니다. 저기서 사용한 -X는 디버깅용 출력에 사용하는 옵션이구요. 나머진 아시겠죠.
좋은점
- 빌드 담당자가 아닌 개발자들은 이전과 동일하게 계속 개발하면 된다.
- 저 설정들을 버전관리에 포함시킬 수 있다.
- 운영 서버에서 빌드 스크립트 설정만 한번 바꿔주면 된다. 그 이후로는 간편하다.
불편한점
- 빌드 담당자(SI에 이런 롤이 있는지 몰겠지만)가 메이븐을 쬐끔 알아야 한다.
사실 위에 적은 좋은점 불편한점은 위에서 생략하고 넘어간 이전 방식과 비교를 했을 때 더 분명한데.. 일단은 그 방법을 적기가 다소 귀찮고 본 글의 주제에도 맞지 않으니 그냥 생략합니다. 대충 세가지 방법을 고민해 뒀는데 나중에 정 한가하고 정 심심해지면 정리해봐야겠습니다.
그거 참 이상하게 안된단 말이죠;;
빌드를 잘 해야지.
흠 저도 안된단 말이요.
빌드 되서 있는 web/classes 폴더밑에 보면 틀림없이 파일이 있는데.. 요상하네 @_@
윤석군이 찾아서 해결을 해죠!!
이클립스를 버려..
콘솔이 답입니다 (...)
맞아 그게 답이야.
이클립스에서 메이븐 하려면 콘솔도 띄워놓고 써야돼 ㅋㅋ
http://www.yes24.com/24/goods/4143117?CategoryNumber=001001003016003012
메이븐 공부하려면 이거 사
오늘 주문 했습니다 ㅎㅎ
열공햇 난 영어 공부 해야지. 캬캬
박재성님 책은 언제나와요??
윤석군 책 나옴 구경 시켜죠~~
모르겠넹;; 흠..
토비님이 11월쯤에 나온다고 하시더라구요. 9월 9일 배송이니까 이후 오프모임 있으면 가져갈께요 ㅋㅋㅋ
ㅇㅇ그랭~