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