Archetype
Archetype은 한국어로 원형(prototype), 전형과 같은 뜻이라고 네이버 사전이 알려줬습니다. Maven에서도 그와 비슷하게 프로젝트의 기본 레이아웃 구조를 생성할 때 사용할 템플릿으로 사용하고 있습니다. RoR의 scaffold랑 비슷한 것 같네요.
archetype:create Goal을 실행하면 다음과 같은 구조의 기본 Archetype을 만들어 줍니다. 이것을 quickstart라고 하며, Hello World 를 출력하는 자바 코드를 가지고 있습니다.
mvn archetype:create -DgroupId=com.mycompany -DartifactId=my-proj
my-proj
|– pom.xml
`– src
|– main
| `– java
| `– com
| `– mycompany
| `– App.java
`– test
`– java
`– com
`– mycompany
`– AppTest.java
|– pom.xml
`– src
|– main
| `– java
| `– com
| `– mycompany
| `– App.java
`– test
`– java
`– com
`– mycompany
`– AppTest.java
이런 프로젝트 구조를 만들어 낸 기반은 META-INF/maven/archetype.xml 리소스 정의 파일과 src/main/resources/archetype-resources 디렉터리 밑에 위치한 Archetype 리소스 파일들 입니다.
maven-quickstart-archetype
|– pom.xml
`– src
`– main
`– resources
|– META-INF
| `– maven
| `– archetype.xml
`– archetype-resources
|– pom.xml
`– src
|– main
| `– java
| `– App.java
`– test
`– java
`– AppTest.java
|– pom.xml
`– src
`– main
`– resources
|– META-INF
| `– maven
| `– archetype.xml
`– archetype-resources
|– pom.xml
`– src
|– main
| `– java
| `– App.java
`– test
`– java
`– AppTest.java
Maven에서 가용한 Archetype들은 http://repo1.maven.org/maven2/org/apache/maven/archetypes/ 에서 확인할 수 있습니다.위에있는 Atchetype 중에서 맘에 드는 것이 없거나, 자신이 자주 사용하는 프로젝트 템플릿이 있다면 그것을 mvn install로 등록하여 사용할 수도 있습니다. 자세한 내용은 http://sonatype.com/book/archetypes.html
위 글의 후반부에는 사용자 정의 archetype 구성에 대하 나왔습니다.