第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Maven Archetype 原型

從本節(jié)開始,我們來介紹一些關(guān)于 Maven 的其他技巧,屬于錦上添花類型的技巧。這些技巧并不會(huì)出現(xiàn)在平時(shí)的使用過程中,但是,如果用到的時(shí)候,你絕對(duì)會(huì)有種相見恨晚的感覺。

我們第一個(gè)引出來的是 Maven 的 Archetype 原型。我們?cè)谧铋_始的章節(jié)中也有所提及,今天我們就來重點(diǎn)講一下 Archetype 原型在什么情況下會(huì)使用到,以及如何使用。

在我們平時(shí)的工作中,可能會(huì)遇到這種情況:當(dāng)我們需要?jiǎng)?chuàng)建新工程的時(shí)候,可能需要從之前的工程當(dāng)中移植一些功能過來,或者新工程與之前的工程有著類似的目錄結(jié)構(gòu),這個(gè)時(shí)候,我們?nèi)绻苯邮褂?copy 的方式,就需要做很大的變動(dòng),并不是很方便。這個(gè)時(shí)候,Archetype 原型就能夠排上用場了。

1. What is Maven Archetype?

我們從 Maven 的官網(wǎng)可以看到這樣一句話:

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 項(xiàng)目模板工具箱。 原型定義為原始的圖案或模型,可制成所有其他同類的東西。 這個(gè)名稱正好適合我們?cè)噲D提供一個(gè)提供生成 Maven 項(xiàng)目的一致方法的系統(tǒng)。 原型將幫助項(xiàng)目創(chuàng)建者為不同用戶創(chuàng)建 Maven 項(xiàng)目模板,并為用戶提供生成這些項(xiàng)目模板的參數(shù)化版本的方法。

通過上述描述,我們可以把 Archetype 簡單的理解為我們做蛋糕時(shí)候的模子,有了這個(gè)模子,我們只需要往里面有選擇性的添加原料,就可以做出各種各樣美味的蛋糕了。

2. How to use Maven Archetype?

上面呢,我們簡單介紹了一下 Archetype,也大概了解到它會(huì)是一個(gè)非常方便的東西,但是我們要怎么制作一個(gè)模子呢,制作好了之后,又要怎么使用呢?

2.1 如何制作 Archetype

首先,我們心中要有一個(gè)模子的雛形,就像我們現(xiàn)在想要做一個(gè)心形的蛋糕,那么我們就要知道心形是什么樣子的,才能做出一個(gè)心形的模子。

在這里呢,我們就需要一個(gè)可以作為模板的工程。例如下圖所示:

非常標(biāo)準(zhǔn)的一個(gè)小項(xiàng)目。

接下來呢,我們就使用這個(gè)項(xiàng)目作為例子,來演示如何使用 Archetype。

第一步,我們進(jìn)入這個(gè)項(xiàng)目的根目錄,并執(zhí)行 如下命令:

mvn -s "D:\SOFT\apache-maven-3.6.3\conf\settings.xml" archetype:create-from-project -DpackageName=com.mic.demo
  • s: 指定 maven 的 setting 文件;
  • DpackageName: 指定項(xiàng)目默認(rèn)包路徑。

看到如下結(jié)果的時(shí)候,就說明我們的模板制定成功了。

緊接著,我們可以來到 demo 項(xiàng)目的 target/generated-sources 目錄下,看到生成的 archetype 項(xiàng)目,如下圖:

第二步,我們可以把 archetype 目錄復(fù)制出來,單獨(dú)作為一個(gè)項(xiàng)目來看。(單獨(dú)復(fù)制出來不是必須的)

導(dǎo)入到 idea 里面后,我們可以看到 Archetype 的項(xiàng)目結(jié)構(gòu)如下:

我們現(xiàn)在要做的就是將這個(gè) Archetype 項(xiàng)目構(gòu)建到我們的 Maven 本地倉庫中。

在 Archetype 項(xiàng)目的的根目錄下執(zhí)行如下命令:

mvn install

執(zhí)行成功后,我們可以在本地倉庫中找到對(duì)應(yīng)的 archetype-catalog.xml 文件:

以及生成的對(duì)應(yīng) Archetype 的 jar 包:

至此,我們的 Archetype 模板就制作完成了。

2.2 使用已經(jīng)做好的 Archetype 模型

其實(shí)使用起來非常簡單,兩種方式:

  • 結(jié)合 idea 來使用

我們打開 idea 來創(chuàng)建一個(gè) Maven 項(xiàng)目,并選擇 add Archetype,將剛剛我們生成的模板坐標(biāo)添加進(jìn)去。

選擇剛剛添加的模板,下一步,并填寫相應(yīng)的信息,就能生成新的項(xiàng)目了。

跟我們的模板工程一模一樣
  • 我們也可以直接使用命令行來進(jìn)行創(chuàng)建

進(jìn)入存放代碼的目錄執(zhí)行如下命令:

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 的坐標(biāo)信息,DgroupId,DartifactId,Dversion 用來指定新創(chuàng)建項(xiàng)目的坐標(biāo)信息。

3. 注意事項(xiàng)

  • 在創(chuàng)建 Archetype 模板的時(shí)候,其實(shí)只需要執(zhí)行:mvn archetype:create-from-project,但是有時(shí)候針對(duì) Maven 不同的配置,有可能會(huì)去 .m2 目錄下去找 settings.xml,可能會(huì)造成創(chuàng)建失?。?/li>
  • 另外不指定package的話,可能會(huì)造成包路徑重復(fù);
  • 我們可以制定一個(gè)項(xiàng)目基線用來創(chuàng)建項(xiàng)目模板,而不是通過已有項(xiàng)目來創(chuàng)建模板,這樣能夠最大程度上減少新創(chuàng)建項(xiàng)目中存在不需要的功能;
  • 我們可以直接在 archetype 目錄下執(zhí)行mvn install 用來將原型構(gòu)建到本地倉庫中去。

4. 小結(jié)

在本節(jié)中,我們主要講了 Maven 的 Archetype 原型,如何創(chuàng)建自己的 Archetype 以及如何使用 Archetype。后面再有需要?jiǎng)?chuàng)建新項(xiàng)目的時(shí)候,可以拿來試一下,事半功倍。