摘要:項(xiàng)目根目錄項(xiàng)目名項(xiàng)目版本號(hào)項(xiàng)目目錄打包的名字二依賴管理概述通過(guò)在配置依賴坐標(biāo),會(huì)自動(dòng)幫我們下載依賴的構(gòu)件。關(guān)于父模塊的依賴配置注意兩點(diǎn)一般都是通過(guò)來(lái)配置所有依賴及其版本號(hào),然后子模塊,在自己的文件中聲明依賴即可,不用再指定版本,以確保統(tǒng)一。
一、Maven 1.1 為什么寫(xiě)Maven
工欲善其事,必先利其器。如今Java相關(guān)開(kāi)發(fā),基本離不開(kāi)Maven、Gradle、MAT、Hudson之類(lèi)的玩意,所以把本文當(dāng)作工具篇吧,后續(xù)有空再整理其他工具。
1.2 概述Maven是優(yōu)秀的構(gòu)建工具,但不僅僅是能構(gòu)建,還有著強(qiáng)大的倉(cāng)庫(kù)管理、項(xiàng)目管理相關(guān)的功能。我這介紹這一句話,像詳細(xì)了解它的所有描述或者構(gòu)建工具的介紹,請(qǐng)自行百度谷歌或參考官網(wǎng)。
1.3 安裝依賴JDK:下載JDK的壓縮包,解壓,配置環(huán)境變量JAVA_HOME=安裝目錄、PATH=$JAVA_HOME/bin:$PATH 即完成。
安裝Maven:同樣下載Maven的壓縮包,解壓,配置MAVEN_HOME=安裝目錄、PATH=$MAVEN_HOME/bin:$PATH 即完成。
檢查JDK : java -version 。 檢查Maven: mvn -version。
安裝后需要了解的是:Maven項(xiàng)目最核心就是pom.xml文件(創(chuàng)建項(xiàng)目后才有),需要在項(xiàng)目中配置的就是配置在pom文件中,還有少數(shù)全局配置是配置在maven安裝目錄中conf下的setting.xml中。
官網(wǎng):https://maven.apache.org/
Maven包查詢:http://mvnrepository.com/ http://search.maven.org/
Maven國(guó)內(nèi)鏡像:http://maven.oschina.net/content/groups/public/
Maven插件查詢:http://maven.apache.org/plugins/
注:國(guó)內(nèi)鏡像也有好些,可以自己找。因?yàn)橹苓叴蠖鄶?shù)人都用了開(kāi)源中國(guó)的鏡像,所以我這邊也推薦它。
1.5 創(chuàng)建Maven項(xiàng)目(1)了解創(chuàng)建符合maven規(guī)范的項(xiàng)目結(jié)構(gòu),即src/main/java、src/main/resources那套。
(2)創(chuàng)建pom.xml文件。
(3)命令行可以通過(guò)Archetype命令生成項(xiàng)目骨架。Eclipse等IDE集成Maven后也可以創(chuàng)建Maven項(xiàng)目(推薦?。?! )。
(4)常用命令
maven定義了很多變量,常見(jiàn)的maven屬性,了解下自己可用,閱讀其他項(xiàng)目的時(shí)候可看懂。
${basedir} 項(xiàng)目根目錄
${project.name}項(xiàng)目名
${project.version}項(xiàng)目版本號(hào)
${project.groupId}項(xiàng)目groupId
${project.build.directory} target目錄
${project.build.finalName} 打包的名字
通過(guò)在pom.xml配置依賴坐標(biāo),Maven會(huì)自動(dòng)幫我們下載依賴的構(gòu)件。
Maven的依賴主要是通過(guò)groupId、artifactId和version三者一起來(lái)確定一個(gè)構(gòu)件的坐標(biāo)。
2.3 關(guān)于dependencyManagementjunit junit 4.10 test ....
這個(gè)標(biāo)簽主要起到依賴統(tǒng)一管理的作用。一般maven開(kāi)發(fā)多個(gè)項(xiàng)目的時(shí)候,都會(huì)創(chuàng)建一個(gè)parent父模塊來(lái)配置pom文件統(tǒng)一管理公用的東西,(下面聚合和繼承就是講這部分)。在dependencyManagement下也是通過(guò)在dependencies標(biāo)簽下配置依賴的,但它上面在dependencies標(biāo)簽配置不同。
不同之處是:在dependencyManagement中配置了,項(xiàng)目并不會(huì)直接下載依賴的構(gòu)件,而是要在子模塊或者當(dāng)前模塊的dependencies中進(jìn)行配置,表明當(dāng)前模塊需要用到的依賴,但此時(shí)就不用再指定版本號(hào)了。dependencyManagement也是以此來(lái)確保各個(gè)模塊對(duì)相同構(gòu)件可以用同一版本,也就利于統(tǒng)一升級(jí)版本號(hào)等等。
三、倉(cāng)庫(kù) 3.1 本地倉(cāng)庫(kù)org.springframework spring-core 3.2.5.RELEASE org.springframework spring-core
本地倉(cāng)庫(kù)沒(méi)啥好說(shuō)的,在maven安裝目錄下的conf/setting.xml中配置localRepository就可以指定路徑。默認(rèn)路徑則是在用戶根目錄下的.m2/repository。
作用:maven編譯模塊的時(shí)候,依賴的模塊都會(huì)按照本地->遠(yuǎn)程(一般是私服)->中央的順序依次查找構(gòu)件。平常開(kāi)發(fā)的模塊也是通過(guò)mvn install安裝到本地倉(cāng)庫(kù),其他編譯時(shí)才能使用;而如果跟其他人合作開(kāi)發(fā)則要通過(guò)deploy發(fā)布到遠(yuǎn)程倉(cāng)庫(kù)。發(fā)布后,別人下載依賴也會(huì)將通過(guò)遠(yuǎn)程或者中央倉(cāng)庫(kù)下載來(lái)的構(gòu)件保存到別人的本地倉(cāng)庫(kù)。
3.2 遠(yuǎn)程倉(cāng)庫(kù)D: epository
一般在項(xiàng)目中,會(huì)在
在pom.xml中配置遠(yuǎn)程倉(cāng)庫(kù)的例子如下:
repo.springsource.org repo.springsource.org-releases http://repo.springsource.org/libs-milestone-local false ... nexus TeamNexusRepository http://localhost:8081/nexus/content/groups/public true false default
另外還可以指定插件的倉(cāng)庫(kù):
nexus TeamNexusRepository http://localhost:8081/nexus/content/groups/public false
在pom.xml中配置的遠(yuǎn)程倉(cāng)庫(kù),只會(huì)在pom文件對(duì)應(yīng)的模塊有效,即使配置在parent的pom中用來(lái)被繼承,那也只是當(dāng)前項(xiàng)目各個(gè)模塊有效。如果多個(gè)項(xiàng)目實(shí)際上都想用一樣的遠(yuǎn)程倉(cāng)庫(kù)(實(shí)際場(chǎng)景就是私服),那需要在setting.xml中利用profile來(lái)進(jìn)行配置。
在setting.xml中配置遠(yuǎn)程倉(cāng)庫(kù)的例子如下:
3.3 倉(cāng)庫(kù)鏡像nexus central http://localhost:8081/nexus/content/groups/public/ central http://localhost:8081/nexus/content/groups/public/ nexus
除了以上配置之外,我們還可以在setting.xml里面配置倉(cāng)庫(kù)的鏡像,一般用于當(dāng)訪問(wèn)某個(gè)倉(cāng)庫(kù)的時(shí)候,可能由于網(wǎng)絡(luò)不同或者其他原因需要轉(zhuǎn)換到另外一個(gè)地址,這個(gè)時(shí)候就可以配置這個(gè)倉(cāng)庫(kù)的鏡像。例如你想覆蓋中央倉(cāng)庫(kù)的默認(rèn)地址,可以在setting.xml里面這樣配置:
maven-net-cn MavenChinaMirror http://maven.net.cn/content/groups/public/ central
這里通過(guò)
在我的項(xiàng)目中,由于一般會(huì)把central設(shè)置為我們的私服倉(cāng)庫(kù),所以大部分情況下也就不用配置鏡像了。如果確實(shí)有多個(gè)倉(cāng)庫(kù)的話,那確實(shí)可以用
四、插件 4.1 概述 4.2 生命周期 4.3 常見(jiàn)插件 4.4 例子 4.5 關(guān)于pluginManagementnexus releases http://localhost:8081/nexus/content/groups/public/ nexus snapshots http://localhost:8081/nexus/content/groups/public/
這個(gè)標(biāo)簽跟dependencyManagement標(biāo)簽一樣,也是為了起到統(tǒng)一管理的作用,只是它統(tǒng)一管理了插件。跟依賴管理一樣,一般也會(huì)在parent父模塊來(lái)配置pom來(lái)配置pluginManagement,統(tǒng)一描述好插件之后,在子模塊中就不用完整的配置插件已經(jīng)綁定的生命周期和執(zhí)行目標(biāo)等等,只需要指定插件的groupId 和 artifactId就可以完成插件的引用。下面給出例子。
父模塊(parent模塊)的pom.xml中配置:
org.apache.maven.plugins maven-source-plugin 2.4 package jar-no-fork
其他子模塊需要多帶帶引用插件的,可以在pom.xml中配置:
五、聚合和繼承 5.1 繼承org.apache.maven.plugins maven-source-plugin
先說(shuō)繼承吧,其實(shí)繼承就是為了抽出相同的東西,然后給項(xiàng)目的其他模塊一起共用,而不用每個(gè)模塊的pom.xml文件都寫(xiě)很多重復(fù)的東西。如果光說(shuō)重復(fù)的工作量也就算了,有個(gè)重點(diǎn)是類(lèi)似spring-core這種多個(gè)模塊都可能用到的依賴,如果每個(gè)模塊都自己配置自己的依賴和版本好,那很容易就會(huì)犯錯(cuò)或者依賴的版本不一致導(dǎo)致錯(cuò)誤等等。因此,在拆分多模塊開(kāi)發(fā)的時(shí)候,盡量考慮使用繼承。
如何使用Maven繼承呢?
(1)建立一個(gè)文件夾,只創(chuàng)建一個(gè)pom.xml文件即可。
(2)然后把各個(gè)模塊通用的東西寫(xiě)到這個(gè)pom.xml中,如屬性定義,工廠定義,依賴坐標(biāo)定義等等。
(3)把這個(gè)pom.xml中的
(4)在各個(gè)子模塊中使用
關(guān)于父模塊的依賴配置注意兩點(diǎn):
(1)一般都是通過(guò)
(2)父項(xiàng)目中什么時(shí)候直接配置
聚合的作用在于可以把一個(gè)項(xiàng)目的多個(gè)模塊一起配置,這樣可以一次性編譯、安裝和發(fā)布多個(gè)模塊。
一般項(xiàng)目都會(huì)把聚合和繼承都會(huì)放到同一個(gè)pom.xml文件進(jìn)行管理。
如何使用Maven聚合呢?
(1)建立一個(gè)文件夾,只創(chuàng)建一個(gè)pom.xml文件。
(2)然后在這個(gè)pom.xml文件中,把這個(gè)pom.xml中的
如果其他模塊跟父pom.xml是同一層的話,如下圖:
則模塊的配置方式為:
六、插件開(kāi)發(fā)hello-world hello-spring
待更新
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65496.html
摘要:譯年你不能錯(cuò)過(guò)的類(lèi)庫(kù)后端掘金各位讀者好,這篇文章是在我看過(guò)的一篇介紹文后,整理出來(lái)的。上線后平穩(wěn)運(yùn)行我的后端書(shū)架后端掘金我的后端書(shū)架月前本書(shū)架主要針對(duì)后端開(kāi)發(fā)與架構(gòu)。 【譯】2017 年你不能錯(cuò)過(guò)的 Java 類(lèi)庫(kù) - 后端 - 掘金各位讀者好, 這篇文章是在我看過(guò) Andres Almiray 的一篇介紹文后,整理出來(lái)的。 因?yàn)閮?nèi)容非常好,我便將它整理成參考列表分享給大家, 同時(shí)附上...
摘要:中很多特性或者說(shuō)知識(shí)點(diǎn)都是和面向?qū)ο缶幊谈拍钕嚓P(guān)的。在多線程中內(nèi)容有很多,只是簡(jiǎn)單說(shuō)明一下中初步使用多線程需要掌握的知識(shí)點(diǎn),以后有機(jī)會(huì)單獨(dú)再詳細(xì)介紹一些高級(jí)特性的使用場(chǎng)景。 寫(xiě)這篇文章的目的是想總結(jié)一下自己這么多年來(lái)使用java的一些心得體會(huì),主要是和一些java基礎(chǔ)知識(shí)點(diǎn)相關(guān)的,所以也希望能分享給剛剛?cè)腴T(mén)的Java程序員和打算入Java開(kāi)發(fā)這個(gè)行當(dāng)?shù)臏?zhǔn)新手們,希望可以給大家一些經(jīng)...
摘要:學(xué)習(xí)筆記先生,您在寫(xiě)代碼嗎不,我們正在完成一項(xiàng)偉大的工程。于是打算重新學(xué)習(xí)一下。中央倉(cāng)庫(kù)鏡像為了分擔(dān)中央倉(cāng)庫(kù)的流量,提升用戶的訪問(wèn)速度。生成項(xiàng)目報(bào)告,站點(diǎn),發(fā)布站點(diǎn)。修改源碼后也需要逐個(gè)手動(dòng)進(jìn)行操作。 maven學(xué)習(xí)筆記 先生,您在寫(xiě)代碼嗎? 不,我們正在完成一項(xiàng)偉大的工程。 前言 在剛學(xué)maven時(shí),我就把maven當(dāng)作一個(gè)引入jar包的工具而已,以前是自己下載jar包,現(xiàn)在是只用...
摘要:重度強(qiáng)迫癥患者取消大小寫(xiě)敏感,讓自動(dòng)完成更齊全。如何為當(dāng)前項(xiàng)目工程添加多個(gè)模塊啊答對(duì)著工程右鍵選擇通常選擇,如圖寫(xiě)在最后歡迎關(guān)注喜歡和點(diǎn)贊后續(xù)將推出更多的工具集教程,敬請(qǐng)期待。公眾號(hào)回復(fù)面試,領(lǐng)取面試實(shí)戰(zhàn)學(xué)習(xí)資源。 showImg(https://segmentfault.com/img/remote/1460000018862588); 前言:IntelliJ IDEA 如果說(shuō)Int...
閱讀 1036·2022-07-19 10:19
閱讀 1806·2021-09-02 15:15
閱讀 1023·2019-08-30 15:53
閱讀 2668·2019-08-30 13:45
閱讀 2664·2019-08-26 13:57
閱讀 1998·2019-08-26 12:13
閱讀 1016·2019-08-26 10:55
閱讀 557·2019-08-26 10:46