Java

[Java] Maven profile로 실행환경 분리하기

Shonir00ng 2022. 7. 14. 09:45

resources-dev / resources-prod  폴더 생성 후 각각의 properties 폴더에 datasource.properties.xml 작성

datasource.dbType=oracle
datasource.driverClassName=oracle.jdbc.driver.OracleDriver

# dev Server
# 내부망
datasource.url=jdbc:oracle:thin:@192.168.0.XXX:1521:XXXX
datasource.username=XXXX_USER
datasource.pasword=XXXX_USER

 

context-datasource.xml

  • propertyPlaceholderConfigurer : 외부의 프로퍼티에 저장된 정보를 스프링 설정 파일에서 사용
  • <list> : 한 개 이상의 프로퍼티 파일을 지정할 시 사용
<!-- propertyConfigurer 추가 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:/properties/datasource.properties</value>
        </list>
    </property>
</bean>

<!-- 기존 oracle ojdbc 라이브러리 설정 수정 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${datasource.driverClassName}"/>
    <property name="url" value="${datasource.url}" />
    <property name="username" value="${datasource.username}"/>
    <property name="password" value="${datasource.password}"/>
</bean>

 

pom.xml

<!-- 서버별 패키징을 위한 설정 (1) -->
<build>
    <resources>
        <resource>
        	<!-- 공통 -->
            <directory>src/main/resources</directory>
        </resource>
        <resource>
            <!-- dev/prod -->
            <directory>src/main/resources-${env}</directory>
        </resource>
    </resources>
</build>

<!-- 서버별 패키징을 위한 설정 (2) -->
<profiles>
    <profile>
        <id>dev</id>
        <!-- 기본 프로파일 값 (프로파일 값이 없을 때) -->
        <activation>
            <activeByDefault>true</activeByDefault>
         </activation>
      <properties>
          <env>dev</env>
      </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>	   
</profiles>

eclipse 실행 시, 프로젝트에서 마우스 오른쪽 버튼 → Maven  Select Maven Profiles