Maven Archetype 原型
從本節開始,我們來介紹一些關于 Maven 的其他技巧,屬于錦上添花類型的技巧。這些技巧并不會出現在平時的使用過程中,但是,如果用到的時候,你絕對會有種相見恨晚的感覺。
我們第一個引出來的是 Maven 的 Archetype 原型。我們在最開始的章節中也有所提及,今天我們就來重點講一下 Archetype 原型在什么情況下會使用到,以及如何使用。
在我們平時的工作中,可能會遇到這種情況:當我們需要創建新工程的時候,可能需要從之前的工程當中移植一些功能過來,或者新工程與之前的工程有著類似的目錄結構,這個時候,我們如果直接使用 copy 的方式,就需要做很大的變動,并不是很方便。這個時候,Archetype 原型就能夠排上用場了。
1. What is Maven Archetype?
我們從 Maven 的官網可以看到這樣一句話:
In short, Archetype is a Maven project templating toolkit. An archetype is defined as an original pattern or model from which all other things of the same kind are made. The name fits as we are trying to provide a system that provides a consistent means of generating Maven projects. Archetype will help authors create Maven project templates for users, and provides users with the means to generate parameterized versions of those project templates.
翻譯過來呢是這樣子的:簡而言之, Archetype 是 Maven 項目模板工具箱。 原型定義為原始的圖案或模型,可制成所有其他同類的東西。 這個名稱正好適合我們試圖提供一個提供生成 Maven 項目的一致方法的系統。 原型將幫助項目創建者為不同用戶創建 Maven 項目模板,并為用戶提供生成這些項目模板的參數化版本的方法。
通過上述描述,我們可以把 Archetype 簡單的理解為我們做蛋糕時候的模子,有了這個模子,我們只需要往里面有選擇性的添加原料,就可以做出各種各樣美味的蛋糕了。
2. How to use Maven Archetype?
上面呢,我們簡單介紹了一下 Archetype,也大概了解到它會是一個非常方便的東西,但是我們要怎么制作一個模子呢,制作好了之后,又要怎么使用呢?
2.1 如何制作 Archetype
首先,我們心中要有一個模子的雛形,就像我們現在想要做一個心形的蛋糕,那么我們就要知道心形是什么樣子的,才能做出一個心形的模子。
在這里呢,我們就需要一個可以作為模板的工程。例如下圖所示:
接下來呢,我們就使用這個項目作為例子,來演示如何使用 Archetype。
第一步,我們進入這個項目的根目錄,并執行 如下命令:
mvn -s "D:\SOFT\apache-maven-3.6.3\conf\settings.xml" archetype:create-from-project -DpackageName=com.mic.demo
- s: 指定 maven 的 setting 文件;
- DpackageName: 指定項目默認包路徑。
看到如下結果的時候,就說明我們的模板制定成功了。
緊接著,我們可以來到 demo 項目的 target/generated-sources
目錄下,看到生成的 archetype 項目,如下圖:
第二步,我們可以把 archetype 目錄復制出來,單獨作為一個項目來看。(單獨復制出來不是必須的)
導入到 idea 里面后,我們可以看到 Archetype 的項目結構如下:
我們現在要做的就是將這個 Archetype 項目構建到我們的 Maven 本地倉庫中。
在 Archetype 項目的的根目錄下執行如下命令:
mvn install
執行成功后,我們可以在本地倉庫中找到對應的 archetype-catalog.xml
文件:
以及生成的對應 Archetype 的 jar 包:
至此,我們的 Archetype 模板就制作完成了。
2.2 使用已經做好的 Archetype 模型
其實使用起來非常簡單,兩種方式:
- 結合 idea 來使用
我們打開 idea 來創建一個 Maven 項目,并選擇 add Archetype,將剛剛我們生成的模板坐標添加進去。
選擇剛剛添加的模板,下一步,并填寫相應的信息,就能生成新的項目了。
- 我們也可以直接使用命令行來進行創建
進入存放代碼的目錄執行如下命令:
mvn archetype:generate -DarchetypeGroupId=com.mic /
-DarchetypeArtifactId=demo-archetype /
-DarchetypeVersion=0.0.1-SNAPSHOT /
-DgroupId=com.mic /
-DartifactId=archetype-test /
-Dversion=0.1 /
-Dpackage=com.mic.ace /
-DinteractiveMode=false
其中 DarchetypeGroupId,DarchetypeArtifactId,DarchetypeVersion
用來指定 Archetype 的坐標信息,DgroupId,DartifactId,Dversion
用來指定新創建項目的坐標信息。
3. 注意事項
- 在創建 Archetype 模板的時候,其實只需要執行:
mvn archetype:create-from-project
,但是有時候針對 Maven 不同的配置,有可能會去 .m2 目錄下去找 settings.xml,可能會造成創建失敗; - 另外不指定package的話,可能會造成包路徑重復;
- 我們可以制定一個項目基線用來創建項目模板,而不是通過已有項目來創建模板,這樣能夠最大程度上減少新創建項目中存在不需要的功能;
- 我們可以直接在 archetype 目錄下執行
mvn install
用來將原型構建到本地倉庫中去。
4. 小結
在本節中,我們主要講了 Maven 的 Archetype 原型,如何創建自己的 Archetype 以及如何使用 Archetype。后面再有需要創建新項目的時候,可以拿來試一下,事半功倍。