摘要:首先進(jìn)入到工程文件下進(jìn)行這個(gè)項(xiàng)目,完成后會(huì)打包成并加入到本地倉(cāng)庫(kù)中,下面我們只需要根據(jù)本地倉(cāng)庫(kù)中的包去創(chuàng)建我們事先定義好的項(xiàng)目框架,執(zhí)行命令后會(huì)穿件如下的項(xiàng)目結(jié)構(gòu)好了現(xiàn)在可以進(jìn)入到中去執(zhí)行運(yùn)行測(cè)試用例。
此篇主要來(lái)談?wù)刴aven自定義archetype,maven是一個(gè)很好的代碼構(gòu)建工具,采用“約定優(yōu)先于配置”的原則進(jìn)行項(xiàng)目管理,相信很多的java開發(fā)者應(yīng)該都了解maven并可能在工作當(dāng)中都是通過(guò)maven來(lái)管理項(xiàng)目的,此篇就不再深究maven的概念問(wèn)題,側(cè)重點(diǎn)來(lái)聊聊如何自定義archetype。
0x01 為什么要自定義archetypemaven也內(nèi)置了很多的archetype供用戶選擇使用什么樣的骨架去創(chuàng)建一個(gè)項(xiàng)目,比如:
maven-archetype-webapp
maven-archetype-quickstart
在創(chuàng)建一個(gè)maven項(xiàng)目的時(shí)候會(huì)列出很多archetype供選擇,maven默認(rèn)的archetype是maven-archetype-webapp。
但是在一個(gè)團(tuán)隊(duì)做開發(fā)的過(guò)程中,可能僅僅依靠maven預(yù)先提供的archetyp可能是不夠的,團(tuán)隊(duì)之間協(xié)作有自己的定義方式,每個(gè)人的結(jié)構(gòu)定義風(fēng)格也不盡相同,在這樣的背景下我們有必要去定義一個(gè)統(tǒng)一的代碼骨架供團(tuán)隊(duì)使用,這樣做的好處還有在新人加入團(tuán)隊(duì)的初期能夠快速的理解項(xiàng)目。
0x02 創(chuàng)建自定義archetype工程archetype是在maven-archetype-plugin插件執(zhí)行g(shù)enerate目標(biāo)的時(shí)候進(jìn)行配置的,本次使用IDEA進(jìn)行archetype的開發(fā),創(chuàng)建archetype的目錄結(jié)構(gòu)如下:
下面對(duì)上述圖片中的描述進(jìn)行詳細(xì)的解釋:
根目錄下boyuarchetype/pom.xml和一般的maven項(xiàng)目一樣主要定義項(xiàng)目的坐標(biāo)等信息。
所有的項(xiàng)目骨架內(nèi)容都集中在boyuarchetype/src/main/resources/archetype-resources中,其中的pom.xml定義了待生成項(xiàng)目的pom文件的內(nèi)容,/src/main/java、/src/test/java中分別定義了待生成項(xiàng)目中相應(yīng)目錄下的內(nèi)容。
boyuarchetype/src/main/resources/META-INF/maven/archetype-metadata.xml中定義相關(guān)的元數(shù)據(jù)描述。
0x03 archetype工程文件詳細(xì)介紹1.boyuarchetype/pom.xml
4.0.0 com.none.budmwp boyuarchetype jar 1.0 boyuarchetype http://maven.apache.org
pom.xml中的packaging和普通的maven項(xiàng)目打包方式相同為jar,沒(méi)有和插件開發(fā)的打包方式保持一致。
groupId一般的命名規(guī)則為公司名加項(xiàng)目名稱,如:com.segmentfault.budmwp
artifactId是指budmwp這個(gè)項(xiàng)目中的模塊名稱。
modelVersion在maven2和maven3中都是4.0.0
2.boyuarchetype/src/main/resources/archetype-resources/pom.xml
4.0.0 ${groupId} ${artifactId} ${version} ${artifactId} http://maven.apache.org junit junit 3.8.1 test org.apache.maven.plugins maven-archetype-plugin 1.8 1.8 org.apache.maven.plugins maven-source-plugin UTF-8
上面${}標(biāo)識(shí)的變量都是通過(guò)maven中的命令行傳進(jìn)來(lái)的,如:mvn archetype:generate -DgroupId=com.none.budmwp
3.boyuarchetype/src/main/resources/META-INF/maven/archetype-metadata.xml
src/main/java **/*.java src/test/java **/*.java
filtered="true"標(biāo)識(shí)下面提到的${}是否要進(jìn)行替換
packaged="true"標(biāo)識(shí)boyuarchetype/src/main/resources/archetype-resources/src/main/java中對(duì)應(yīng)的內(nèi)容是否要放入到package中。
4.boyuarchetype/src/main/resources/archetype-resources/src/main/java/App.java
package ${package}; /** * @author boyu * @version $Id: a, v0.1 16/5/2 下午2:28 boyu Exp $. */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }
${package}會(huì)被maven命令行中傳進(jìn)來(lái)的參數(shù)進(jìn)行替換。
0x04 構(gòu)建archetype工程通過(guò)上面將一個(gè)簡(jiǎn)單的archetype工程已經(jīng)搭建完成,接下來(lái)要去根據(jù)這個(gè)archetype創(chuàng)建我們定義好的項(xiàng)目骨架。
首先進(jìn)入到boyuarchetype工程文件下進(jìn)行make clean install這個(gè)項(xiàng)目,完成后會(huì)打包成boyuarchetype-1.0.jar并加入到本地倉(cāng)庫(kù)中,下面我們只需要根據(jù)本地倉(cāng)庫(kù)中的boyuarchetype-1.0.jar包去創(chuàng)建我們事先定義好的項(xiàng)目框架, mvn archetype:generate -DgroupId=com.none.budmwp -DartifactId=boyuarchetest -Dpackage="com.none.budmwp.boyuarchetest" -DarchetypeGroupId=com.none.budmwp -DarchetypeArtifactId=boyuarchetype -DarchetypeVersion=1.0 -X -DarchetypeCatalog=local
執(zhí)行命令后會(huì)穿件如下的項(xiàng)目結(jié)構(gòu):
好了現(xiàn)在可以進(jìn)入到boyuarchetypetest中去執(zhí)行mvn test 運(yùn)行測(cè)試用例。到這里整個(gè)項(xiàng)目就創(chuàng)建完畢了。
0x05 總結(jié)初入java,進(jìn)入到公司參與項(xiàng)目的第一件事就是拉代碼學(xué)習(xí)代碼,但是沒(méi)有接觸過(guò)過(guò)多的java開發(fā)不知道m(xù)aven、eclipse所謂何物,只有依賴?yán)鲜謧冾I(lǐng)進(jìn)門了。maven是一個(gè)很好的構(gòu)建管理工具,目前java重度用戶阿里、支付寶都是通過(guò)maven來(lái)進(jìn)行項(xiàng)目構(gòu)建的,所以還是有必要去了解了解maven的,未來(lái)還很遙遠(yuǎn),讓maven來(lái)提高你的項(xiàng)目構(gòu)建效率吧。
0x06 參考資料大家可以去參考許曉斌著的maven實(shí)戰(zhàn)一書,里面講maven講的很好,初學(xué)者可以快速入門。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/65867.html
摘要:這個(gè)文件會(huì)出現(xiàn)在創(chuàng)建的模板工程中,如果是單模塊工程,則是對(duì)整個(gè)項(xiàng)目的依賴管理如果是多模塊工程,該是總文件,該文件中會(huì)定義項(xiàng)目的子模塊以及對(duì)子模塊的依賴進(jìn)行管理等,子模塊定義在子模塊下,子模塊文件只管理子模塊的依賴。 雖然maven已經(jīng)提供了maven-archetype-webapp、maven-archetype-quickstart等項(xiàng)目骨架幫助我們快速構(gòu)建項(xiàng)目架構(gòu),但是默認(rèn)提供的...
摘要:基本配置環(huán)境變量環(huán)境變量中添加為主目錄在中添加使用阿里云中央倉(cāng)庫(kù)修改根目錄下文件夾中的文件,內(nèi)容如下創(chuàng)建基于的項(xiàng)目使用命令行創(chuàng)建使用原型插件創(chuàng)建工程。 「博客搬家」 原地址: 簡(jiǎn)書 原發(fā)表時(shí)間: 2017-03-23 Maven 是基于項(xiàng)目對(duì)象模型「POM」,可以通過(guò)一小段描述信息來(lái)管理項(xiàng)目的構(gòu)建、報(bào)告和文檔的軟件項(xiàng)目管理工具。本文總結(jié)了 Maven 的基本用法。 1. Maven...
摘要:微服務(wù)應(yīng)用架構(gòu)腳手架開源項(xiàng)目地址作為一名碼農(nóng),經(jīng)常要為了工作或業(yè)余愛(ài)好自己搭建項(xiàng)目大公司除外,配環(huán)境,找包,很是煩人。可快速創(chuàng)建用于開發(fā)環(huán)境的基礎(chǔ)應(yīng)用架構(gòu)。前提是你得有私服的發(fā)布賬號(hào)及密碼執(zhí)行將腳手架發(fā)布到私服。 微服務(wù)應(yīng)用架構(gòu)腳手架 開源項(xiàng)目地址: http://git.oschina.net/chinax... 作為一名碼農(nóng),經(jīng)常要為了工作或業(yè)余愛(ài)好自己搭建項(xiàng)目(大公司除外),配環(huán)...
摘要:準(zhǔn)備工作配置安裝下載訪問(wèn)密碼官方下載地址安裝解壓到盤根目錄下目錄隨便放最好不要有中文配置環(huán)境變量測(cè)試打開命令窗口鍵入可以輸出版本信息就證明環(huán)境變量生效且安裝成功修改的本地倉(cāng)庫(kù)位置及鏡像路徑進(jìn)入的根目錄點(diǎn)擊打開文件夾編輯文件 準(zhǔn)備工作 配置安裝Maven 下載 apache-maven-3.2.3.zip 訪問(wèn)密碼 1d47 官方下載地址 安裝 解壓apache-m...
摘要:用創(chuàng)建項(xiàng)目組織標(biāo)識(shí)包名項(xiàng)目名稱指定,,創(chuàng)建一個(gè),創(chuàng)建一個(gè)是否使用交互模式其中,為項(xiàng)目骨架類型,可選擇的有每一個(gè)骨架都會(huì)建相應(yīng)的目錄結(jié)構(gòu)和一些通用文件,最常用的是和骨架。再比如這告訴來(lái)從模板創(chuàng)建項(xiàng)目。 用maven創(chuàng)建項(xiàng)目 mvn archetype:generate -DgroupId=cn.codingxiaxw.seckill -DartifactId=seckill -Dpack...
閱讀 730·2021-11-23 09:51
閱讀 3624·2021-10-11 10:58
閱讀 15979·2021-09-29 09:47
閱讀 3707·2021-09-01 11:42
閱讀 1375·2019-08-29 16:43
閱讀 1898·2019-08-29 15:37
閱讀 2186·2019-08-29 12:56
閱讀 1795·2019-08-28 18:21