빌드 이식성
이식성(portability)의 핵심은 특별한 수정이나 변경 없이도 다양한 환경에 배포하고 운영하는 것이 가능해야 한다는 것을 뜻한다.
빌드 이식성은 서로 다른 환경에서 추가적인 설정 파일의 변경을 하지 않더라도 빌드가 가능한 환경을 만드는 것이다.
ex) 운영체제(OS)가 다른 환경(윈도우, 리눅스, 맥 등) JDK 버전이 다른 환경에서도 추가 설정 없이 가능한 애플리케이션을 빌드할 수 있어야 하는 것을 의미한다.
대부분 프로젝트를 하다보면 개발 환경(로컬, 개발, 운영 서버)에 따라 설정이 달라질 때가 있기 때문에 개발 환경마다 다른 빌드 스크립트를 만들지 않으면서 하나의 빌드 스크립트에서 서로 다른 설정이 가능해야 한다.
- 데이터베이스 설정
- 로깅 설정
- 프레임워크 관련 설정
- 서버 설정
- 컴파일러 설정
서로 다른 환경에서 실행 가능한 애플리케이션을 빌드하려면 다양한 요소를 고려해야 한다. 메이븐은 이 같은 이식성(portability)를 지원하기 위해 프로파일 기능을 제공한다.
프로파일
프로파일 기본
메이븐은 서로 다른 환경에 따라 달라지는 설정을 다르게 관리할 수 있는 프로파일기능을 제공한다.
개발 환경마다 기본 설정을 재정의할 수 있다. (개발자 PC, 개발 서버, 운영서버의 데이터베이스 접속 정보)
<project>
<profiles>
<profile>
<id>local</id>
<properties>
<jdbc.host>127.0.0.1</jdbc.host>
<jdbc.username>local</jdbc.username>
<jdbc.password>local</jdbc.password>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<jdbc.host>125.125.125.125</jdbc.host>
<jdbc.username>dev</jdbc.username>
<jdbc.password>dev</jdbc.password>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<jdbc.host>125.125.125.120</jdbc.host>
<jdbc.username>prod</jdbc.username>
<jdbc.password>prod</jdbc.password>
</properties>
</profile>
</profiles>
</project>
위의 설정은 local, dev, prod 세 개의 프로파일을 설정하는 소스이다.
모든 프로파일은 고유한 id 값을 갖으며, 메이븐은 빌드 할 때 이 id 값을 활용하여 개발 환경에 맞는 설정을 한다.
프로파일마다 설정한 id 값은 아래와 같은 명령어로 사용할 수 있다.
mvn -P<profile_id> Phase[s] Goal[s]
mvn -Plocal test (local 프로파일 설정으로 빌드)
<profile/>엘리먼트 아래에는 <project/>루트 엘리먼트가 가질 수 있는 모든 엘리먼트를 설정할 수 있다.
프로파일 활성화
빌드를 실행하는 시점에 프로파일 id를 전달해 프로파일을 실행하는 방법도 있지만 (앞의 얘기)
빌드 환경에 따라 프로파일을 자동으로 실행하는 활성화(activation)기능도 있다.
빌드 환경의 JDK 버전에 따라 서로 다른 프로파일을 실행하고자한다면 아래와 같이 사용할 수 있음
<project>
<profiles>
<profile>
<id>jdk15</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.5</jdk>
</activation>
.... 설정설정
</profile>
<profile>
<id>jdk16</id>
<activation>
<jdk>1.6</jdk>
</activation>
.... 설정설정
</profile>
</profiles>
</project>
- <activation/> : 프로파일 id를 인자로 전달하지 않아도, 현재 빌드하고 있는 환경과 일치하는 프로파일을 자동으로 실행
- <activeByDefault/> : true 로 설정된 프로파일은 현재 빌드 환경과 일치하는 프로파일이 없을 경우 기본으로 실행된다.
JDK 버전뿐 아니라 OS 종류 및 버전, 파일의 유무, 속성 값에 따라 프로파일 활성화 여부를 결정할 수 있다.
<project>
<profiles>
<profile>
<id>local</id>
<activation>
<activeByDefault>false</activeByDefault>
<jdk>1.6</jdk>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
<property>
<name>environment</name>
<value>local</value>
</property>
<file>
<exists>database.properties</exists>
<missing>application.properties</missing>
</file>
</activation>
</profile>
</profiles>
</project>
위의 옵션 중 하나라도 일치하는 값이 있다며 프로파일이 실행된다.
'프로그래밍 노트 > 빌드도구' 카테고리의 다른 글
[Maven] Maven Resources Plugin (0) | 2020.09.01 |
---|---|
[Maven] 메이븐 모듈 (0) | 2019.07.11 |
[Maven] 메이븐 속성(properties, pom/project, settings ...) (0) | 2019.03.31 |
[Maven] 메이븐 의존성 전이 (0) | 2019.03.31 |
[Maven] 메이븐 의존 라이브러리 적용 스코프 (0) | 2019.03.31 |