国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Maven的pom文件那些事

NoraXie / 2271人閱讀

摘要:文件項目隸屬的實際項目名實際項目中的一個項目模塊名稱版本號當前項目打包的方式,默認為以上的配置會獲得一個格式的包用于定義構建輸出的一些附屬的構建。

pom.xml文件
org.son.nexus//項目隸屬的實際項目名
nexus-indexer//實際項目中的一個maven項目模塊名稱
2.0.0//版本號
jar//當前maven項目打包的方式,默認為jar

以上的配置會獲得一個-.格式的包//nexus-indexer-2.0.0.jar

jdk7//用于定義構建輸出的一些附屬的構建。classifier是不能直接定義的,只能存在附加的構件(插件)時,才能(必須)添加。在包名上也會有所提現(nexus-indexer-2.0.0-javadoc.jar)

jar包在倉庫中的路徑規律:groupId/artifactId/version/groupId-version

依賴倉庫

groupId、artifactId、version為基本坐標

type為依賴類型,默認為jar

scope為依賴范圍

compile:編譯,測試,運行三種classpath都有效

test:只對測試有效

provided:編譯和測試有效

runtime:測試和運行有效

system:系統依賴,依賴的包是從計算機本地導入,與systemPath配合使用

? ${java.home}/lib/rt.jar

? system

傳遞性依賴

maven默認就是支持的。

什么是傳遞性依賴?

比如:現在要導入A.jar包,但A.jar有依賴于B.jar,在maven中就會默認導入B.jar,而不需要手動去導入。

scope最好設為compile

傳遞性依賴存在一個問題:工程中存在兩個jar分別依賴的是B.jar的不同版本jar包,就會出現錯誤。

optional:可選依賴,true 不會傳遞,false會傳遞(默認)


mysql
mysql-connector-java
5.1.10
true

當其他項目C依賴B項目時,mysql-connector-java的依賴不會發生傳遞給C

優點:

減少沖突,不用的功能不傳遞

一個jar應該只有 一個職責原則

exclusions排除依賴

用于替換某個 依賴中的依賴包作用


    
        com.juv
        project-B
        1.0.0
        
            //可以有多個
                com.juv
                project-C
            
        
    
    
        com.juv
        project-B
        1.1.0
    

該例子的意思:不想使用project-B中版本的project-C依賴包,而將其環衛1.1.0的project-C包

歸類依賴

場景:存在一群版本號一致的依賴,想通過一個統一的配置,將其統一配置和修改


    2.5.6

調用方式

${spring}
部署至遠程倉庫

修改工程中的pom文件


    ....
    
           //發布版本構件的倉庫
              //遠程倉庫的唯一標識
               //自定義
               //該倉庫地址
        
         //快照版本的設置
            
            
               
        
    
    ....

如果需要認證,則在setting.xml文件中增加一個元素進行配置

在配置完成后,執行mvn clean deploy 就會根據當前版本類型,發布到相應的倉庫中

快照版本

快照不是正式版本,當設為帶有SNAPSHOT的version時,即為快照版本,每次向倉庫部署是,會自動打上時間戳,其他引用快照相同版本時會自動下載更新

例如:2.1-SNAPSHOT時,則會下載2.1-20091214之類的構件

在maven本地倉庫的groupId/artifactId/version文件路徑下會存在maven-metadata.xml文件,會記錄版本信息



  com.android.support
  multidex
  1.0.0
  
    
      1.0.0
      1.0.1
    
    20141209014044
  

maven生命周期

maven的生命周期是抽象的,其實際行為都是由插件來完成的。

maven的生命周期是不做任何實際工作,實際任務都由插件完成。

maven具有三個獨立的生命周期:clean、defeat、site

1、clean生命周期:清理項目,包含三個phase。

1)pre-clean:執行清理前需要完成的工作

2)clean:清理上一次構建生成的文件

3)post-clean:執行清理后需要完成的工作

2、default生命周期:構建項目,重要的phase如下。

1)validate:驗證工程是否正確,所有需要的資源是否可用。
2)compile:編譯項目的源代碼。
3)test:使用合適的單元測試框架來測試已編譯的源代碼。這些測試不需要已打包和布署。
4)Package:把已編譯的代碼打包成可發布的格式,比如jar。
5)integration-test:如有需要,將包處理和發布到一個能夠進行集成測試的環境。
6)verify:運行所有檢查,驗證包是否有效且達到質量標準。
7)install:把包安裝到maven本地倉庫,可以被其他工程作為依賴來使用。
8)Deploy:在集成或者發布環境下執行,將最終版本的包拷貝到遠程的repository,使得其他的開發者或者工程可以共享。

3、site生命周期:建立和發布項目站點,phase如下

1)pre-site:生成項目站點之前需要完成的工作

2)site:生成項目站點文檔

3)post-site:生成項目站點之后需要完成的工作

4)site-deploy:將項目站點發布到服務器

命令行輸入:$mvn clean 其實調用的是clean生命周期的clean階段,執行了pre-clean和clean

而這些命令其實是由插件提供功能的。

自定義綁定插件

    
        
            org.apache.maven.plugins//maven官方,官方的可以省略該標簽
            maven-source-plugin//插件
            2.1.1//沒有version時,會默認下載最新的release版本
          //配置執行n個任務
                
                       attach-sources//可以任意
                       verify//綁定到verify生命周期,在此時才會起作用
                    
                           jar-no-fork//啟用該插件的jar-no-fork功能
                    
                
            
        
    

因為一個插件可能存在多個功能,但我們并不一定所有的功能都需要,所以設定goal標簽,表示我們要實現的功能。

插件配置

命令行配置:$mvn install -Dt 插件相關參數 //適用于當每次運行時,這個插件的配置都會變的情況

pom中全局配置:


    
        
            maven-compiler-plugin
            3.1
            
              1.7  //jdk1.7
              1.7 //編譯后jdk1.7
            
        
    
聚合(多模塊)

意義:一次構建所有想要構建的項目


    4.0.0
    org.son.nexus
    nexus-indexer
    2.0.0
    pom//本身也是一個maven工程
    
          account-email//想要構建的項目,這里寫的是當前pom文件下的相對路徑地址
        account-persilist
    

聚合pom文件的packaging標簽一定要是pom,其工程就只是一個pom文件,沒有其他的實現代碼

一般來說模塊處的目錄名應與其artifactId一致

聚合模塊與其他模塊的目錄結構并非一定要父子關系

繼承

父pom


    4.0.0
    org.son.nexus
    nexus-indexer
    2.0.0
    pom//本身也是一個maven工程
     
        
            com.juv
            project-B
            1.0.0
            
                
                    com.juv
                    project-C
                
            
        
        
            com.juv
            project-B
            1.1.0
        
    

父pom的packaging也是pom

子pom


    4.0.0
    org.son.nexus
    nexus-B
    2.0.0
    jar
    
        org.son.nexus
        nexus-C
        1.0.0-SNAPSHOT
        ../pom.xml//相對路徑
    
    

子pom的packaging則不一定要是pom,但一定有parent標簽

子類的groupId和version也可以繼承與父pom文件

標簽

作用:當子類不需要父pom中的某些依賴的時,就可以使用。

父pom


    
        
            spring-core
            org.springframework
            3.1.1.RELEASE
        
     

標簽所包裹的依賴是不會主動被加載進入子pom中,只有子pom中顯式再次聲明的時候才會被依賴

子pom


    
        spring-core
        org.springframework
    

可以省略version等其他配置,因為父pom中已經配置過了

若想獲取父pom中所有的dependencyManagement中的構件配置,則在子pom中如下配置


    
        
            account-parent
            com.juvenxu.accout
            3.1.1.RELEASE
            pom
            import
        
     

配置父pom的一些信息

插件管理

父pom中的插件不想在子類中默認使用

跟依賴管理一樣,被包裹的插件配置不會被子pom主動獲取,只有當子pom中聲明了該插件的groupId和artifactId后,才會被繼承

一個pom文件既可以是聚合也可以是父pom

反應堆

在聚合構建時,構件模塊的先后順序的排列。

按書寫的先后順序進行構建

加料區

如果同一個項目中存在多個模塊相互依賴時候,version和groupId可以使用${project.groupId}(當前模塊的groupId)和${project.verison},這樣就不用不斷的更改了。

標簽用來確定最終包名

以上です(Ending)

ありがどう(Thank You)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65881.html

相關文章

  • maven自定義archetype

    摘要:首先進入到工程文件下進行這個項目,完成后會打包成并加入到本地倉庫中,下面我們只需要根據本地倉庫中的包去創建我們事先定義好的項目框架,執行命令后會穿件如下的項目結構好了現在可以進入到中去執行運行測試用例。 此篇主要來談談maven自定義archetype,maven是一個很好的代碼構建工具,采用約定優先于配置的原則進行項目管理,相信很多的java開發者應該都了解maven并可能在工作當中...

    wangjuntytl 評論0 收藏0
  • Lagom參考指南(三)

    摘要:針對您的個人需要,有一些設置和任務可用來調整服務器,讓我們來探索它們默認端口號默認情況下,服務器在端口上啟動。 開發環境下運行Lagom1.開發環境 Lagom的sbt或者maven項目是可以基于開發的環境允許使用單個命令來運行任意數量的服務。 當代碼更改時,同樣的命令也會重新加載服務,這樣你就不用手動重啟了,您可以繼續關注您的工作,并讓Lagom進行編譯和重新加載。 (1)運行Mav...

    lemanli 評論0 收藏0
  • Tomcat優化筆記

    摘要:不同的應用場景,不同的架構,不同的需求,都會對優化設置有不同要求。在這里我所記述的只是我自己在一些應用中所設置的優化項,以備不時之需,并不是放之四海而皆準的準則。為了消除這些警告,還需要根治。 一千個人眼中就有一千個哈姆雷特。——偽西方諺語 關于Tomcat的優化點之多,我估計沒有上萬,也有成千。不同的應用場景,不同的架構,不同的需求,都會對優化設置有不同要求。在這里我所記述的只是我...

    Coding01 評論0 收藏0
  • Lagom參考指南(三)

    摘要:有一些設置和任務可以為您喜歡的嵌入式服務定位器調整,讓我們來探索它們默認的端口號在中,服務發現的端口號默認的是但是這個端口是非常容易被其他的應用所占用的。 開發環境下運行Lagom1.開發環境 Lagom的sbt或者maven項目是可以基于開發的環境允許使用單個命令來運行任意數量的服務。 當代碼更改時,同樣的命令也會重新加載服務,這樣你就不用手動重啟了,您可以繼續關注您的工作,并讓La...

    VishKozus 評論0 收藏0

發表評論

0條評論

NoraXie

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<