成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Maven核心概念和日常實(shí)踐

894974231 / 3222人閱讀

摘要:項(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中。

1.4 常用Maven網(wǎng)站

官網(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)常用命令

1.6 Pom文件變量屬性

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} 打包的名字

二、依賴管理 2.1 概述

通過(guò)在pom.xml配置依賴坐標(biāo),Maven會(huì)自動(dòng)幫我們下載依賴的構(gòu)件。
Maven的依賴主要是通過(guò)groupId、artifactId和version三者一起來(lái)確定一個(gè)構(gòu)件的坐標(biāo)。

2.2 例子

    
        junit         
        junit   
        4.10          
        test              
                             
                              
           ....
           
        
    

2.3 關(guān)于dependencyManagement

這個(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)等等。

 
    
        
            org.springframework
            spring-core
            3.2.5.RELEASE
        
    

    
    
        org.springframework
        spring-core
    
三、倉(cāng)庫(kù) 3.1 本地倉(cāng)庫(kù)

本地倉(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ù)。

D:
epository
3.2 遠(yuǎn)程倉(cāng)庫(kù)

一般在項(xiàng)目中,會(huì)在標(biāo)簽下配置遠(yuǎn)程倉(cāng)庫(kù),可以配置多個(gè),但id必須唯一。中央倉(cāng)庫(kù)默認(rèn)的id為central,可以不用配置;但如果有其他倉(cāng)庫(kù)用這個(gè)id,則會(huì)覆蓋中央倉(cāng)庫(kù)。(不過(guò),像一般公司都會(huì)自己搭建私服,所以也可以把central覆蓋成我們私服的倉(cāng)庫(kù),我們也這樣做)。
在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ù)的例子如下:


    
      nexus
      
        
          central
          http://localhost:8081/nexus/content/groups/public/
        
      
      
        
          central
          http://localhost:8081/nexus/content/groups/public/
        
      
    


 
    nexus
3.3 倉(cāng)庫(kù)鏡像

除了以上配置之外,我們還可以在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ò)標(biāo)簽指定為central倉(cāng)庫(kù)做鏡像,就是訪問(wèn)central的url不再是國(guó)外那個(gè)地址,而會(huì)被轉(zhuǎn)為我們配置的鏡像地址http://maven.net.cn/content/groups/public/ (也可以配置為私服地址等等), 而如果想為所有的倉(cāng)庫(kù)做鏡像那么可以改為 *。
在我的項(xiàng)目中,由于一般會(huì)把central設(shè)置為我們的私服倉(cāng)庫(kù),所以大部分情況下也就不用配置鏡像了。如果確實(shí)有多個(gè)倉(cāng)庫(kù)的話,那確實(shí)可以用*的方式指向私服。

3.4 發(fā)布到倉(cāng)庫(kù)

    
        nexus
        releases
        http://localhost:8081/nexus/content/groups/public/
    
    
        nexus
        snapshots
        http://localhost:8081/nexus/content/groups/public/
    
四、插件 4.1 概述 4.2 生命周期 4.3 常見(jiàn)插件 4.4 例子 4.5 關(guān)于pluginManagement

這個(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中配置:


    
       
          org.apache.maven.plugins
          maven-source-plugin
       
    
五、聚合和繼承 5.1 繼承

先說(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中的的值設(shè)置為pom。
(4)在各個(gè)子模塊中使用標(biāo)簽指明自己使用的父項(xiàng)目。

關(guān)于父模塊的依賴配置注意兩點(diǎn):
(1)一般都是通過(guò)來(lái)配置所有依賴及其版本號(hào),然后子模塊,在自己的pom文件中聲明依賴即可,不用再指定版本,以確保統(tǒng)一。
(2)父項(xiàng)目中什么時(shí)候直接配置呢?就是確定每個(gè)子模塊基本都會(huì)用的依賴,統(tǒng)一配置,不用每個(gè)子模塊再多帶帶去配的,比如junit、log4j這種。

5.2 聚合

聚合的作用在于可以把一個(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中的的值設(shè)置為pom和配置標(biāo)簽即可。

如果其他模塊跟父pom.xml是同一層的話,如下圖:

則模塊的配置方式為:


    hello-world
    hello-spring
六、插件開(kāi)發(fā)

待更新

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65496.html

相關(guān)文章

  • 參考 - 收藏集 - 掘金

    摘要:譯年你不能錯(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í)附上...

    feng409 評(píng)論0 收藏0
  • 給Java新手的一些建議——Java知識(shí)點(diǎn)歸納(Java基礎(chǔ)部分)

    摘要:中很多特性或者說(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)...

    lykops 評(píng)論0 收藏0
  • Maven學(xué)習(xí)筆記

    摘要:學(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)在是只用...

    tomlingtm 評(píng)論0 收藏0
  • 工具集核心教程 | 第二篇: IDEA入門(mén)到進(jì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...

    skinner 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<