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