2014년 2월 26일 수요일

Maven Profiles - 서로 다른 빌드 환경간의 이식

Maven Profiles

  • Maven에 있는 Profile의 사용 목적은 서로 다른 빌드 환경간의 이식성 이다.

Profile 간단 사용 예제

  • profile 설정 간단 예제
<profiles>
  <profile>
    <id>local</id>
    <properties>
        <env>local</env>
    </properties>            
  </profile>
  <profile>
    <id>alpha</id>          
    <properties>
        <env>alpha</env>
    </properties>
  </profile>
  <profile>
    <id>beta</id>
    <properties>
        <env>beta</env>
    </properties>
  </profile>
  <profile>
    <id>release</id>
    <properties>
        <env>release</env>
    </properties>
    
    <activation>
        <property>
            <name>bds</name>
            <value>false</value>                    
        </property>                
    </activation>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>                    
                    <debug>true</debug>
                    <optimize>true</optimize>
                    <encoding>utf-8</encoding>
                    <showDeprecations>true</showDeprecations>
                    <fork>true</fork>                            
                    <executable>/usr/local/env/java/jdk1.5.0_10/bin/javac</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>
  </profile>
  ..
</profiles>  

<properties>
    <env>local</env>
    <bds>false</bds>
    <clover.home>analysis_tools/clover</clover.home>
    <checkstyle.home>analysis_tools/checkstyle</checkstyle.home>
    <pmd.home>analysis_tools/pmd</pmd.home>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>      
</properties>

  • 실행시 profile 옵션을 사용한다 (ex. mvn package -Palpha)
  • 실행위치의 pom.xml, 실행위치의 profiles.xml, $USER_HOME/settings.xml, $M2_HOME/conf/settings.xml 순으로 profile 항목을 찾는다.
  • profile의 id 가 동일한 경우가 나타나면 해당 profile 에서 선언된 내용을 적용한다.
    즉 사용자 정의 환경변수 env 의 값이 alpha로 변경 됨.
  • mvn -Palpha는 mvn -Denv=alpha 로 변경 사용.

Profile activation의 사용

  • activation 엘리먼트는 오직 profile 엘리먼트 내부에서만 사용할 수 있다.
  • 정의한 환경과 실행 환경이 일치하면 profile에 설정한 값들이 project에 설정한 값에 대체 한다.
  • mvn -Ddeploy=true 실행시 아래 activation 수행 됨
     
    <profiles>
    
    <profile>
      <activation>
        <property>
            <name>deploy</name>
            <value>true</value>
        </property>
      </activation>
      <build>
        <plugins>       
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <mkdir dir="../webapps" />
                                <copy todir="../webapps" overwrite="true" preservelastmodified="true">
                                    <fileset  dir="${basedir}/web">
                                        <include name="**/*" />
                                    </fileset>
                                </copy>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>        
        </plugins>
      </build>
    </profile>
    </profiles>        
    

문서정보

댓글 없음: