Fragments Of Time

Happiness only real when shared.

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

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

建立 JAX-RS / Jersey 專案

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

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

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

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

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

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 來執行指令:

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

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

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

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

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

相關文章:

參考文章: