AdSense

網頁

2019/7/4

Maven 什麼是Archetype

本篇簡介Maven Archetype是什麼。

在Eclipse建立Maven的專案時,有個步驟會要求選擇Archetype如下。



那這些Archetypes是什麼呢?簡單來說,Archetype是Maven(其實是Maven Archetype plugin)建立專案的模板工具(template toolkit)。模板是指專案目錄結構的樣式(directory structure pattern),而各種Archetype裡面的目錄樣式都不太一樣。


例如Java網路應用程式(Web application)必須遵從Servlet規格書的目錄結構規則來放置各種檔案,結合Maven慣例的目錄結構是下面這個樣子。

myweb
|
`-- src
|   `-- main
|   |   `-- java
|   |   `-- resources
|   |   `-- webapp
|   |       |-- WEB-INF
|   |       |   `-- web.xml
|   |       `-- index.jsp
|   `-- test
`-- target
`-- pom.xml

或是一個簡單Maven專案目錄結構則是下面這樣。

simple
|
`-- src
|   |-- main
|   |   `-- java
|   |       `-- $package
|   |           `-- App.java
|   `-- test
|       `-- java
|           `-- $package
|               `-- AppTest.java
`-- pom.xml

如果沒有Archetype來讓Maven幫我們產生各種專案需要的目錄結構,則每次新建專案時都必須自己手動建立專案的所有目錄,非常不方便。

有了Archetype,建立專案時Maven就會依照Archetype規劃的目錄結構來幫我們產生目錄或檔案,讓我們不用每次新建專案時都要重複一次建立專案目錄的動作。

而上面各種可選的Archetypes,為Maven本地內建的各種Archetypes如下。


Archetype ArtifactIds說明
maven-archetype-archetype產生Archetype專案
maven-archetype-j2ee-simple產生簡單的J2EE專案
maven-archetype-plugin產生Maven plugin專案
maven-archetype-plugin-site產生Maven plugin site專案
maven-archetype-portlet產生JSR-268 Portlet專案
maven-archetype-profiles
maven-archetype-quickstart產生簡單的Maven專案
maven-archetype-site產生Maven site專案
maven-archetype-site-simple產生簡單的Maven site專案
maven-archetype-webapp產生Maven Web App專案

以上最常使用maven-archetype-quickstart建立簡單的Maven專案,
及使用maven-archetype-webapp建立Maven Web專案,剩下的很少用(我個人沒用過)。

除了本地預設的Archetypes,還可以加入遠端的Maven Archetype Catalog,位置在
http://repo.maven.apache.org/maven2/archetype-catalog.xml

你可以在Eclipse功能選單點選Window -> Preferences -> Maven -> Archetypes,然後按Add Remote Catalog...加入。



加入後出現在中間欄位清單中。



如此在新增Maven專案時,切換至新加入Remote Archetype Catalog,可以看到一堆多出來的archetypes可使用。不過我們也用不到這些archetype,因為我們不會一個一個去了解這個archetype模板是長什麼樣子。




Archetype是以jar的型式存在,包含archetype的專案內容,描述archetype的metadata資訊,及Velocity樣板來構成原型專案(prototype project)

你可以在Maven預設的本地倉庫(local repository) m2資料夾中找到曾經用過的archetype資料夾,例如Windows 7系統為C:\Users\{$user.home}\.m2\repository\org\apache\maven\archetypes



因為我在本機之前建立過以上兩種archetype的專案,所以Maven從中央倉庫(Maven central repository)把這兩個archetype下載回來給Maven使用。

在archetype資料夾中可找到archetype的jar檔。




參考:

沒有留言:

AdSense