Whiteship's Note


Build Lifecycle(default 자세히)

Build/Maven : 2007.11.27 12:11


Resources

process-resource는 간단하게, src/main/resources 디렉터리에 있는 파일들을 복사하여 target/classes 디렉터리에 복사한다고 생각할 수 있습니다. 이때, ${...}를 텍스트로 대체할 수 있는 필터를 사용할 수 있습니다.

예를들어, src/main/resources/META-INF/service.xml 이 다음과 같을 때..

<service>
  <!-- This URL was set by project version ${project.version} -->
  <url>${jdbc.url}</url>
  <user>${jdbc.username}</user>
  <password>${jdbc.password}</password>
</service>

src/main/filters/default.properties 파일에 그 값들을 외부로 빼낼 수 있습니다.

jdbc.url=jdbc:hsqldb:mem:mydb
jdbc.username=sa
jdbc.password=

이 두개의 파일을 다음과 같이 설정하여 사용할 수 있습니다.

<build>
  <filters>
    <filter>src/main/filters/default.properties</filter>
  </filters>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
</build>

POM에 프로퍼티 파일에 명시했던 값들을 설정하면, 프로퍼티 파일을 사용하지 않을 수도 있다고 합니다.

Compile

컴파일 할 자바 버전을 명시할 수 있습니다. 기본으로 JDK 1.3 호환 코드로 컴파일 것으로 가정하기 때문에, 다음과 같이 명시적으로 사용할 버전을 설정해주어야 합니다.

<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

Test Resource

process-test-resource는 process-resource와 거의 같습니다. 차이가 있다면 POM에 testResources 엘리먼트 내부에 testResouce 엘리먼트로 정의해둔 Test Resource들을 target/test-classes에 복사합니다.

Test

이 Phase는 surefire:test Goal과 연관되어있습니다. Surefire는 *Test.java로 끝나는 파일들을 기본으로 실행합니다. 물론 별도로 설정할 수도 있는데, Appendix A에서 다룹니다. JUnit을 기본 테스트 프레임워크로 기대하고 있지만, TestNG를 다음과 같이 설정할 수도 있습니다.

<dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>4.7</version>
      <scope>test</scope>
      <classifier>jdk14</classifier>
</dependency>

'Build > Maven' 카테고리의 다른 글

http://mvnrepository.com/  (0) 2007.12.02
Profile  (0) 2007.11.30
Archetype  (0) 2007.11.29
Plugin  (4) 2007.11.28
Build Lifecycle(site)  (0) 2007.11.27
Build Lifecycle(default 자세히)  (0) 2007.11.27
Build Lifecycle(default)  (0) 2007.11.27
Build Lifecycle(clean)  (2) 2007.11.27
POM  (0) 2007.11.26
mvn site  (0) 2007.11.20
Maven 용어 3  (0) 2007.11.19
top

Write a comment.


Build Lifecycle(default)

Build/Maven : 2007.11.27 11:48


default

이 라이프사이클은 Maven의 action 프레임워크의 핵심입니다. 표준적인 빌드 절차 순으로 구성되어 있습니다.

vlidate - 프로젝트가 올바른지 그리고 필요로 하는 정보가 모두 가용한지 확인
generate-sources - 컴파일과 관련된 소스 코드 생성
process-srouces - 소스 코드 처리
generate-resources - 패키지에 포함되어 있는 리소스 생성
process-resources - 목적지로 리소스를 복사하고 처리, 패키징 준비
compile - 소스 코드 컴파일
process-classes - 컴파일 후 생성된 파일들의 전 처리.
generate-test-srouces
process-test-sources
generate-test-resources
process-test-resources
test-compile
test - 단위 테스트 프레임워크를 사용하여 테스트를 실행
prepare-package - 패키징하기 전에 필요한 작업을 수행
package - 컴파일 된 코드를 JAR와 같은 배포용 형태로 묶음
pre-integration-test - 통합 테스트에 필요한 작업 수행
integration-test - 통합 테스트를 수행할 곳에 패키지를 배포하고 실행
post-integration-test - 통합 테스트 후에 해야할 일 수행
verify - 패키지를 올바른지 검증
install - 패키지를 로컬 저장소에 설치
deploy - 최종 패키지를 원격 저장소에 복사

프로젝트의 패키징 타입에 따라 위의 Phase들에 연관되어 있는 Goal들이 다릅니다. 따라서 pom 패키징 타입인 프로젝트와 jar 패키징 프로젝트가 같은 빌드 라이프사이클을 가지고 있더라고 각각의 Phase를 실행할 때마다 하는 일이 달라집니다. 예를들어, 위의 경우 package Phase에서 pom 패키징 타입의 프로젝트는 site:attach-descriptor Goal을 실행하고, jar 패키징 타입의 프로젝트는 jar:jar를 실행합니다.

각각의 패키징 타입에 따라 연관되어있는 goal들은 다음과 같습니다.

jar :: 기본 패키징 타입.

process-resources - resources:resources
compile - compiler:compile
process-test-resources - resources:testResources
test-compile - compiler:testCompile
test - surefire:test
package - jar:jar
install - install:install
deploy - deploy:deploy

pom :: 가장 간단한 패키징 타입. 생성되는 파일은 pom 뿐. 별도의 jar나 ejb같은 패키지는 없음.

package - site:attach-descriptor
install - install:install
deploy - deploy:deploy

mvn-plugin :: 몇 가지 기술 파일들과 저장소의 데이터에 변경을 가합니다. 모든 Goal들은 플러그인에 들어있다는 것만 알고 넘어가라네요.

generate-resources - plugin:descriptor
process-resources - resources:resources
compile - compiler:compile
process-test-resources - resources:testResources
test-compile - compiler:testCompile
test - surefire:test
package - jar:jar, plugin:addPluginArtifactMetadata
install - install:install, plugin:updateRegistry
deploy - deploy:deploy

ejb :: ejb 플러그인을 필요로 합니다.

process-resources - resources:resources
compile - compiler:compile
process-test-resources - resources:testResources
test-compile - compiler:testCompile
test - surefire:test
package - ejb:ejb
install - install:install
deploy - deploy:deploy

war :: src/main/webapp/WEB-INF/ 디렉터리에 web.xml 설정 파일을 필요로 합니다.

process-resources - resources:resources
compile - compiler:compile
process-test-resources - resources:testResources
test-compile - compiler:testCompile
test - surefire:test
package - war:war
install - install:install
deploy - deploy:deploy

ear :: 배포 기술자(applicaion.xml)로 구성되어있는 간단한 Java EE 구조체. 만약 application.xml 파일이 없다면, POM 파일에 기반하여 파일을 생성해줍니다.

generate-resources - ear:generate-application-xml
process-resources - resources:resources
package - ear:ear
install - install:install
deploy - deploy:deploy

par :: 뭔지 모르겠음.

process-resources - resources:resources
compile - compiler:compile
process-test-resources - resources:testResources
test-compile - compiler:testCompile
test - surefire:test
package - par:par
install - install:install
deploy - deploy:deploy

커스텀 패키징 타입을 만들 수도 있으며, 그에대한 내용은 나중에 다룹니다. 다음에는 위에서 간단하게 살펴봤던 default Phase들을 조금만 더 들여다보겠습니다.

'Build > Maven' 카테고리의 다른 글

Profile  (0) 2007.11.30
Archetype  (0) 2007.11.29
Plugin  (4) 2007.11.28
Build Lifecycle(site)  (0) 2007.11.27
Build Lifecycle(default 자세히)  (0) 2007.11.27
Build Lifecycle(default)  (0) 2007.11.27
Build Lifecycle(clean)  (2) 2007.11.27
POM  (0) 2007.11.26
mvn site  (0) 2007.11.20
Maven 용어 3  (0) 2007.11.19
Maven 용어 2  (0) 2007.11.19
top

Write a comment.