IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  자바 | 오픈 소스  >

아파치 메이븐 2 시작하기 (한글)

developerWorks
Go to the previous page16 페이지 중 7 페이지Go to the next page

문서 옵션

샘플 코드


제안 및 의견
피드백

튜토리얼 평가

이 컨텐츠를 개선하기 위한 도움을 주십시오.


메이븐 2 다루기: 첫 번째 메이븐 2 프로젝트

첫 번째 예제에서는 메이븐 2를 사용하여 적은 노력으로 간단한 프로젝트를 빌드하는 방법을 살펴보겠다. 메이븐 2의 자바 프로젝트에 대한 내장 지식을 쓰면 다른 빌드 도구에서 필요할지도 모르는 지루한 설정을 줄일 수 있다.

산술 연산을 하는 클래스

예제로 산술 연산을 다루는 클래스를 사용한다. 메인 클래스는 NumOps이고 소스 코드는 Listing 4에 나와있다.


Listing 4. NumOps 클래스
                    
package com.ibm.devworks;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class NumOps {
  private List <Operation> ops = new ArrayList 
<Operation>(); 
  public  NumOps() {
    ops.add( new AddOps());
  }
  public Operation getOp(int i)
   { Operation retval; 
   if (i > ops.size())  
      { retval = null; 
   } else { 
     retval = (Operation) ops.get(i);
   } return retval; 
  }
  public int size() { 
    return ops.size(); 
  }
  public static void main( String[] args ) {
    NumOps nop = new NumOps(); 
    for (int i=0;  i < nop.size(); i++) { 
      System.out.println( "2 " + 
        nop.getOp(i).getDesc() + 
        " 1 is " + 
        nop.getOp(i).op(2,1) ); 
    }
  }
}

NumOps 클래스는 두 개의 정수에 산술 연산을 할 수 있는 객체들의 집합을 관리한다. 메인 메서드는 NumOps 인스턴스를 생성하고NumOps에 의해 관리되는 객체들에 각각 getDesc() 메서드와 op() 메서드를 호출한다. NumOps에 의해 관리되는 모든 객체는 Operation 인터페이스를 구현했다. 이 인터페이스는 Listing 5에 나와있다.


Listing 5. Operation 인터페이스
                    
package com.ibm.devworks;

public interface Operation {
   int op(int a, int b);
   String getDesc();
}

첫 예제에서 이 인터페이스를 구현한 클래스는 AddOps 클래스 하나다. Listing 6에 있다.


Listing 6. AddOps 클래스
                    
package com.ibm.devworks;

public class AddOps implements Operation {
   public int op(int a, int b) {
      return a+b;
   }
   public String getDesc() {
      return "plus";
   }
}

NumOps 클래스를 실행하면 다음과 같은 결과가 출력된다.

 2 plus 1 is 3




위로


초기 프로젝트를 만들기 위해 Archetype 사용하기

메이븐을 사용하여 빌드할 수 있는 간단한 자바 프로젝트에 필요한 것들을 만들기 위해 메이븐 2와 함께 기본으로 제공하는 Archetype 플러그인을 사용할 수 있다. build-phase 플러그인과 달리 Archetype 플러그인은 메이븐 프로젝트 빌드 생명주기 밖에서 수행되며 메이븐 프로젝트를 만들기 위해 사용한다. NumOps 프로젝트를 가지고 있을 디렉터리에서 아래에 있는 명령을 실행한다(모두 한 줄로 입력해야 한다).

mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes 
  -DgroupId=com.ibm.devworks -DartifactId=NumOps

명령은 com.ibm.devworks/NumOps/1.0-SNAPSHOT이라는 이름으로 모듈 코디네이트가 Archetype 플러그인을 제공한다. 이 경우 Archetype 플러그인이 항상 1.0-SNAPSHOT를 기본으로 사용하고 있기 때문에 버전을 명시할 필요가 없다. 이 명령문은 관례적인 메이븐 2 디렉터리 구조에 따라 프로젝트에 필요한 시작점인 pom.xml 파일을 만든다. 본 튜토리얼의 소스 코드는 example 1 디렉터리에서 찾을 수 있다(다운로드를 보기 바란다).

결과는 Listing 7과 비슷할 것이다.


Listing 7. 메이븐 Archetype을 사용해 NumOps 프로젝트 만들기
                    

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] -------------------------------------------------------------------------
---
[INFO] Building Maven Default Project
[INFO]    task-segment: [archetype:create] (aggregator-style)
[INFO] -------------------------------------------------------------------------
---
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus

...

[INFO] [archetype:create]
[INFO] Defaulting package to group ID: com.ibm.devworks
[INFO] -------------------------------------------------------------------------
---
[INFO] Using following parameters for creating Archetype: maven-archetype-quicks
tart:RELEASE
[INFO] -------------------------------------------------------------------------
---
[INFO] Parameter: groupId, Value: com.ibm.devworks
[INFO] Parameter: packageName, Value: com.ibm.devworks
[INFO] Parameter: basedir, Value: C:\temp\maven
[INFO] Parameter: package, Value: com.ibm.devworks
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: artifactId, Value: NumOps
[INFO] ********************* End of debug info from resources from generated POM
 ***********************
[INFO] Archetype created in dir: C:\temp\maven\NumOps
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Sat Dec 02 22:04:02 EST 2006
[INFO] Final Memory: 4M/8M
[INFO] ------------------------------------------------------------------------



Archetype 플러그인은 디렉터리 트리, pom.xml 파일, App.java 애플리케이션을 만든다. 단위 테스트 소스 코드를 위한 디렉터리 트리와 AppTest.java 단위 테스트도 생성한다. 이 프로젝트는 이제 준비가 다 됐다. 그림 6에서 Archetype 플러그인으로 만든 디렉터리와 파일들을 볼 수 있다.


그림 6. Archetype이 생성한 디렉터리와 파일들
Archetype이 생성한 디렉터리와 파일들

이제 해야 할 일은 NumOps.java, Operation.java, AddOps.java 파일을 App.java가 있는 곳으로 이동시키고 App.java 파일을 삭제하는 것이다. 다음 절에서는 생성된 pom.xml을 커스터마이징해 몇 가지 변화를 주겠다.




위로



Go to the previous page16 페이지 중 7 페이지Go to the next page
    IBM 소개 개인정보 보호정책 문의