Maven的介紹和使用(待補)

maven的作用
1.管理jar
  增加第三方jar (例如我要上傳文件,commons-fileupload.jar commons-io.jar  )(版本可能下錯)maven下載就不會衝突
  jar包之間的依賴關係 (commons-fileupload自動關聯下載所有依賴的jar)
2.講項目拆分成若干個模塊

maven概念
    基於java平臺的自動化構建工具
    make-ant-maven-gradle

maven能幹的事
清理  將編譯結果進行刪除,爲重新編譯做準備
編譯 java->class
測試 單元測試 開發人員 測試人員 (針對於項目中的關鍵點進行測試,亦可用項目中的測試代碼去測試開發代碼)
報告  將測試結果進行顯示
打包  將項目中包含的多個文件 壓縮成一個文件 用於安裝 或者部署 (java項目打包成jar,web項目打包成war)
安裝  將打成的包,放到本地倉庫(現在有三個模塊(項目),一個用來寫DAO,一個是service,service依賴於dao,但是這是兩個不同的項目,所以就要把它放到本地倉庫,讓其他模塊去安裝它,供其他項目使用)
本地倉庫
中央倉庫      (私服nexus)
中央倉庫鏡像 緩解服務器壓力,不可能只有一個倉庫,分流
(本地倉庫是遠程倉庫的一個緩衝和子集,當你構建maven項目的時候,首先會從本地倉庫查找資源,如果沒有,那麼maven會從遠程倉庫下載到你本地倉庫。)

部署  將打成的包,放到服務器上準備運行(將java,js,jsp等各個文件進行篩選,組裝,變成一個可以直接運行的項目)
    -eclipse中部署的web項目可以運行
    -將eclipse中的項目,複製到tmocat/webapps中則不能運行
    -項目可以在webapps中直接運行
    -eclipse中的項目,在部署時,會生成一個對應的部署項目(在wtpwebapps中)
    區別在於:部署項目,沒有源碼文件,只有編譯後的class文件
    因爲二者目錄結構不一致,因此tomcat無法直接運行eclipse中複製過來的項目(因爲 如果要在tomcat中運行一個項目,則該項目要嚴格遵循tomcat目錄結構)
    可以右鍵eclipse的項目export,變成war包,然後放到wtpwebapps中,不需要解壓,會自動解壓(裏面的文件結構符合tomcat)
    eclipse中的項目要在tomcat裏運行,就需要部署
    
    
自動化構建工具:將原材料(java,js,css,html,圖片)->產品(可發佈項目)
編譯-打包-部署-測試 (如果沒有maven) -》自動構建(maven)
---------------------------
1.下載配置maven
  配置JAVA_HOME
  配置MAVEN_HOME
      M2_HOME
  配置path(bin目錄)
  驗證
    mvn -v
  配置本地倉庫
    默認本地倉庫(可以在maven目錄中的conf的settings.xml中查看) : ${user.home}/.m2/repository
    修改本地倉庫 : <localRepository>路徑(例如D:/xxx)</localRepository>
2.使用maven
  約定 優於 配置
  硬編碼方式  job.setPath("d://abc");
  配置方式  job  conf.xml <path>d:\\abc</path>
  約定:使用默認值
  maven約定的目錄結構:
    項目
        src
            main     程序功能代碼
              java    java代碼
              resources    資源代碼,配置代碼
            test      測試代碼
              java
              resources
        pom.xml  項目對象模型
        
        gav:
        <groupId>域名翻轉+大項目名</groupId>
        <artifactId>子模塊名</artifactId>
        <version>版本號</version>
        
        
       
        -----------------3  座標詳解----------------------------
        <groupId>org.sonatype.nexus</groupId>
        <artifactId>nexus-indexer</artifactId>
        <version>2.0.0</version>

        <packaging>jar</packaging>
        groupId
        定義當前maven項目隸屬的實際項目。
        groupId的表示方式與Java包名的表示方式類似,如: <groupId>org.sonatype.nexus</groupId>

        artifactId
        該元素定義實際項目中的一個Maven項目(模塊),推薦的做法是使用實際項目的名稱作爲artifactId的前綴。
        如:<artifactId>nexus-indexer</artifactId>
        在默認情況下,maven生成的構件,其文件名會以artifactId作爲開頭,如:nexus-indexer-2.0.0.jar。

        packaging【可選的,默認爲jar】:
        當不定義packaging時,maven會使用默認值jar。
        
       

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.2.6.ga</version>
</dependency>

它被下載後將會被存放至

%repository%/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar

其中%repository%就是你本地的repository目錄!

不知大家看出來了沒有,它是按你的Dependency的groupid + artifactid + version,然後以點號作分隔,來建立文件夾的,最後建立的文件夾如下

|--org

    |--hibernate

        |--hibernate

            |--3.2.6.ga

                |--hibernate-3.2.6.ga.jar

可能會有些人會問那個jar包的名字是怎麼來的,細心的人或許早己觀察出來了,沒錯,就是artifactId + "-" + version + ".jar"。

        
        依賴:
          一開始講過
          在maven項目中,如果要使用一個當時存在的jar或模塊,則可以通過依賴實現(本地倉庫,遠程倉庫去尋找)
          執行mvn:必須在pom.xml所在的目錄中執行(項目路徑)
          編譯(第一次會先下載maven基礎jar包,從遠程倉庫下載後,放到本地倉庫,第二次就不用了): mvn compile --只編譯main目錄
          測試(第一次會先下載測試基礎環境):mvn test
          mvn package(第一次也是會下載執行該命令的基礎環境)   打成jar/war
          mvn install(同) 將開發的模塊 放入本地倉庫 供其他模塊使用 (路徑在倉庫的/groupId/ artifactId/ version/下)
          mvn clean(同) 清理項目裏的編譯文件的目錄(target目錄)
          
        
          
        <dependency>
            <groudId>junit</groudId>
            <artifactId>junit</artifactId>
            <version>4.0</version>
            <scope>test</scope>
        <dependency>  
          
依賴的範圍,依賴的有效性
complie(默認) test provided


                           compile    test   provided
(編譯)主程序(main)       √        ×          √
(測試)測試程序(test)     √        √          √
部署(運行)                 √        ×          ×

                           compile    test   provided
(編譯)主程序(main)       A.jar        ×          A.jar
(測試)測試程序(test)     A.jar        A.jar      A.jar
部署(運行)                 A.jar        ×          ×

maven在編譯,測試,運行項目時,各自使用一套classpath

在eclipse中創建maven工程:
1.配置maven
windows -> preferences 輸入maven,找到installation,eclipse通常自帶,最好使用自己下載的maven,然後user Settings,在User Settings找到自己的settings.xml路徑,然後下方的localRepository會更改爲你設置的本地倉庫路徑
在eclipse中編寫完pom.xml依賴後,需要右鍵項目 maven-update project


運行:
Run As:
1 Maven build 執行上次Maven build...
2 Maven build... Goals中可以寫clean compile test package等

maven生命週期:
生命週期和構建關係;
生命週期中的順序:a b c d e
當我們執行c命令,實際執行abc
像package就是處於比較靠後的位置
package命令後,實際執行了:
resources
compile
test
package

發佈了34 篇原創文章 · 獲贊 36 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章