Maven 입문 | Java 응용 프로그램 개발 | DarchetypeArtifactId 지정

Maven은 다양한 프로그램을 만들 수 있다. 이것들은 각각에 프로젝트를 작성하는 단계에서 작성 순서가 다르거나, pom.xml에 대한 작성이 다를 것이다. Maven을 이용하여 개발을 하려면, “자신이 만들려는 프로그램을 어떻게 만들어야 할지"를 알아야 한다.

특정 프로젝트 만들기

먼저 기본 중의 기본으로 Java에 의한 어플리케이션(보통 컴퓨터에서 더블 클릭으로 실행할 수 있는 Java 응용 프로그램) 개발부터 생각해 보도록 하자.

Maven으로 프로젝트를 만들 때에 “mvn archetype:generate"라는 커멘드를 실행했었다. 이것은 프로젝트 생성의 가장 기본이 되는 것이다. 하지만 이것을 실행하면, 템플릿 목록이 길게 나열된다. “여기에서 사용하는 템플릿을 선택"하는 것이지만, 이미 1000개 이상의 항목이 있기 때문에 선택하기에 매우 힘들다.

실은 프로젝트를 만들 때, 사용하는 템플릿을 미리 지정해 둘 수 있다. 이것은 - DarchetypeArtifactId라는 옵션을 사용한다.

mvn archetype:generate -DarchetypeArtifactId=아티팩트ID

이렇게 호출한다. 이 -DarchetypeArtifactId라는 것은 사용하는 템플릿 아티펙트 ID를 지정한다. 아무튼, 대부분의 경우에는 아티팩트 ID를 지정하면 그것으로 어떤 템플릿인지 특정할 수 있다.

그러나 경우에 따라서는 특정할 없는 경우도 있다(우연히 같은 아티팩트 ID 템플릿이 여러 개가 있는 것 같은 경우). 이럴 때는 그룹 ID를 지정하는 -DarchetypeGroupId라는 옵션도 준비되어 있다. 이를 사용하여 다음과 같이 실행하면 확실해 진다.

mvn archetype:generate -DarchetypeGroupId=그룹ID -DarchetypeArtifactId=아티팩트ID

기본은 maven-archetype-quickstart

그럼 일반적인 Java 응용 프로그램을 개발할 때는 어떻게 지정하면 되는가. 기본은 아래와 같다.

$ mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart

이와 같이 실행하면 다음과 같이 출력이 된다.

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO] 
[INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO] 
[INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
Define value for property 'groupId': : 
Define value for property 'artifactId': : 
Define value for property 'version':  1.0-SNAPSHOT: : 
Define value for property 'package':  : : 
[WARNING] Archetype is not fully configured
Define value for property 'groupId': : ^Ckimkcui-MacBook-Pro:mvn kimkc$ 
kimkcui-MacBook-Pro:mvn kimkc$ mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO] 
[INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO] 
[INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
Define value for property 'groupId': : 그룹 ID 입력
Define value for property 'artifactId': : 아티팩트 ID 입력
Define value for property 'version':  1.0-SNAPSHOT: : (default)
Define value for property 'package':  그룹 ID : :  (default)

그룹 ID, 아티팩트 ID, 버전, 패키지 등을 차례로 입력한다. 보면 알 수 있듯이, 이것은 앞전에 프로젝트 생성할 때, 입력한 것과 동일하다. 이러한 입력하면 그대로 Java 애플리케이션 프로젝트가 만들어진다.