整合 Maven 與 Yeoman,學習筆記 (2) - 使用 mvn archetype:generate 建立 JAX-RS / Jersey 專案

建立整合專案時,可以使用 Maven 的 template 機制,建立需要的專案架構。這時候可以執行 mvn archetype:generate 指令,從中選取適合的範本。執行該指令時,若不指定 filterarchetypeGroupIdarchetypeArtifactId 參數,會進入 interactive mode,Maven 會列出在中央倉庫中所有的 archetypes,目前有 800 多個範本可選。

建立 JAX-RS / Jersey 專案

根據 Jersey - Download 的說明,可以執行 mvn archetype:generate 指令:

1
2
3
4
mvn archetype:generate \
-DarchetypeGroupId=org.glassfish.jersey.archetypes \
-DarchetypeArtifactId=jersey-quickstart-webapp \
-DarchetypeVersion=2.5

快速建立 jax-rs web app。由於省略 -DarchetypeVersion=2.5 參數時,Maven 會自動選擇最新的版本,所以其實只需要這樣:

1
2
3
mvn archetype:generate \
-DarchetypeGroupId=org.glassfish.jersey.archetypes \
-DarchetypeArtifactId=jersey-quickstart-webapp

若是不想進入互動模式,也可以直接指定 groupIdartifactIdversionpackage 參數,然後指定 -DinteractiveMode=false 參數,進入 batch mode,譬如:

1
2
3
4
5
6
7
8
mvn archetype:generate \
-DarchetypeGroupId=org.glassfish.jersey.archetypes \
-DarchetypeArtifactId=jersey-quickstart-webapp \
-DgroupId=com.github.myapp \
-DartifactId=myapp \
-Dversion=1.0.0-SNAPSHOT \
-Dpackage=com.github.myapp \
-DinteractiveMode=false

自行建立 archetype

若經常需要重複建立類似的專案,也可以考慮自行建立 archetype。等有空的時候再來試試看。

參考文件: Guide to Creating Archetypes

後記

Yeoman 的 GETTING STARTED WITH YEOMAN 文件上說:

On Windows, we suggest you use an improved command line tool such as Console2 or PowerShell to improve the experience.

但我使用 Windows PowerShell 來執行指令:

1
2
3
mvn archetype:generate
-DarchetypeGroupId=com.sun.jersey.archetypes
-DarchetypeArtifactId=jersey-quickstart-webapp

會出現錯誤訊息:

The goal you specified requires a project to execute but there is no POM in this directory

後來發現把參數用引號刮起來,像這樣:

1
2
3
mvn archetype:generate
"-DarchetypeGroupId=com.sun.jersey.archetypes"
"-DarchetypeArtifactId=jersey-quickstart-webapp"

才能正確執行。由於不熟 PowerShell,暫時還不清楚原因。目前還是使用 cmd 來建置專案。

歡迎大家的回饋與心得分享。

參考文章:

相關文章: