本篇簡介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
檔。
參考:
沒有留言:
張貼留言