<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Maven 3 入門 -- 核心概念

      坐標

      例如上篇helloworld的pom.xml配置文件中的

       

      <groupId>com.zhaoyang</groupId>

      <artifactId>HelloWorld</artifactId>

      <version>1.0-SNAPSHOT</version>

       

      其實就是坐標,那么Maven的坐標元素包括groupId、artifactId、version、packaging、classifier

      當一個項目通過依賴,插件或者父項目引用和另外一個項目關聯的時候,Maven通過坐標來精確定位一個項目。

       

      groupId:  團體,公司,小組,組織,項目,或者其它團體。團體標識的約定是,它以創

      建這個項目的組織名稱的逆向域名開頭。

       

      artifactId: 在groupId下的表示一個單獨項目的唯一標識符

      version:  定義項目的版本

      packaging:打包方式,比如:jar或者war,默認是jar

      classifier: 表示構件的jdk版本,我們不能直接定義

       

       

      ---------------------------------------------------------------------------------------------------------------------------------

       

      我們把開始的HelloWorld項目安裝到本地倉庫,運行mvn clean install

      那么現在去本地倉庫目錄下查看那個項目,我們就可以理解坐標在倉庫中的構成

      如下圖:

       

       

      注:maven的坐標并不僅僅只是指一個對應的jar文件,而是包括它的依賴等等等等,我們通過坐標可以精確的定位到這個maven項目。

       

       

      Maven的生命周期(Life Cycle)

      什么是生命周期?

      生命周期是指我們對項目的清理,初始化,編譯,測試,打包,集成測試,驗證,部署,站點生產等等一系列的流程,但是每個公司都是用不同的方式來來做這些同樣的事情,那么Maven它就給我們把這些過程(稱為構建過程)進行了抽象和統一

       

      Maven有三套獨立的生命周期,它們分別是clean , default,  site

       

      1) clean    生命周期是用于清理項目 (默認是刪除了target文件夾)

       

      2) default  生命周期是用于構建項目

       

      3) site     生命周期是是用于建立項目站點

       

      clean生命周期

       

      pre-clean

      清理之前的準備

      clean

      進行清理工作,通常是干掉target文件夾

      post-clean

      清理之后的準備工作

       

      default生命周期

       

      validate

      驗證項目是否正確,以及所有為了完整構建必要的信息是否可用

      initialize

       

      generate-sources

      生成所有需要包含在編譯過程中的源代碼

      process-sources

      處理源代碼,比如過濾一些值

      generate-resources

      生成所有需要包含在打包過程中的資源文件

      process-resources

      復制并處理資源文件至目標目錄,準備打包

      compile

      編譯項目的源代碼

      process-classes

      處理編譯生成的文件,例如對Java類進行字節碼增強

      generate-test-sources

      生成所有包含在測試編譯過程中的測試源碼

      process-test-sources

      處理測試源碼,比如過濾一些值

      generate-test-resources

      生成測試需要的資源文件

      process-test-resources

      復制并處理測試資源文件至測試目標目錄

      test-compile

      編譯測試源碼至測試目標目錄

      process-test-classes

       

      test

      使用合適的單元測試框架運行測試,這些測試應該不需要代碼被打包或發布

      prepare-package

      在真正的打包之前,執行一些準備打包必要的操作

      package

      將編譯好的代碼打包成可分發的格式,如JAR,WAR,或者EAR

      pre-integration-test

      執行一些在集成測試運行之前需要的動作,如建立集成測試需要的環境

      integration-test

      如果有必要的話,處理包并發布至集成測試可以運行的環境

      post-integration-test

      執行一些在集成測試運行之后需要的動作,如清理集成測試環境。

      verify

      執行所有檢查,驗證包是有效的,符合質量規范

      install

      安裝包至本地倉庫,以備本地的其它項目作為依賴使用

      deploy

      復制最終的包至遠程倉庫,共享給其它開發人員和項目

       

      site生命周期

       

      pre-site

       

      site

       

      post-site

       

      site-deploy

       

       

       

      注:在每個生命周期的不同階段,如果執行了后面階段的,前面的就會自動執行

      比如我們執行 

      mvn clean 就相當于執行了 pre-clean 以及 clean

      mvn test  就相當于執行了 validate --> initialize --> … -->compile-->…--->test

      倉庫

      在Maven世界中,任何一個依賴、插件或者項目的構建輸出,都可以稱為構件。任何一個構件都有一組坐標唯一標識。

       

      得益于坐標機制,任何Maven項目使用任何一個構件的方式都是完全相同的。在此基礎上,Maven可以在某個位置統一存儲所有Maven項目共享的構件,這個統一的位置就是倉庫。

       

      對于Maven來說,倉庫只分為兩大類:本地倉庫和遠程倉庫。當Maven根據坐標尋找構件的時候,它首先會查看本地倉庫,如果本地倉庫存在此構件,則直接使用;如果本地倉庫部存在此構件,Maven就會去遠程倉庫查找,發現需要的構件之后,下載到本地倉庫再使用。

       

      依賴管理(maven最強大的特性)

      什么是依賴管理(Dependency Management)?

       

      簡單的說,比如我們的java項目一般都是會依賴其他的包,在maven的世界里,這些被依賴的包被稱為dependency,就如開始我們配置文件中配置的一樣,而dependency又是其他工程的坐標。

       

      依賴的傳遞性(Transitive Dependencies)

       

      在Maven中一個依賴不僅僅是一個JAR。它是一個POM文件,這個POM可能也聲明了對其它構件的依賴。這些依賴的依賴叫做傳遞性依賴,Maven倉庫不僅僅存貯二進制文件,也存儲了這些構建的元數據(metadata)

       

      比如假如你的項目依賴于一個庫,而這個庫又依賴于五個或者十個其它的庫(就像Spring或者Hibernate那樣)。你不必找出所有這些依賴然后把它們寫在你的pom.xml里,你只需要加上你直接依賴的那些庫,Maven會隱式的把這些庫間接依賴的庫也加入到你的項目

      中。Maven也會處理這些依賴中的沖突,同時能讓你自定義默認行為,或者排除一些特定的傳遞性依賴

       

      Maven也提供了不同的依賴范圍(dependency scope),比如我們上個項目配置的JUNIT

      <dependency>

                  <groupId>junit</groupId>

                  <artifactId>junit</artifactId>

                  <version>4.7</version>

                  <scope>test</scope>

      </dependency>

      其中的scope為test就是說明只有在運行測試編譯的時候才會加入到classpath中

       

      注:

      當為項目創建JAR文件的時候,它的依賴不會被捆綁在生成的構件中,他們只是用來編

      譯。當用Maven來創建WAR或者EAR,你可以配置Maven讓它在生成的構件中捆綁依賴,

      你也可以配置Maven,使用provided范圍,讓它排除WAR文件中特定的依賴。provided范

      圍告訴Maven一個依賴在編譯的時候需要,但是它不應該被捆綁在構建的輸出中。當你

      開發web應用的時候provided范圍變得十分有用,你需要通過Servlet API來編譯你的代

      碼,但是你不希望Servlet API的JAR文件包含在你web應用的WEB-INF/lib目錄中。

      posted on 2012-01-07 00:39  陽陽多  閱讀(2555)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲狠狠爱一区二区三区| 国产成人一卡2卡3卡四卡视频| 性男女做视频观看网站| 中卫市| 国产精品熟妇视频国产偷人| 中文有无人妻VS无码人妻激烈| 精品少妇无码一区二区三批| 日韩国产成人精品视频| 特黄特色的大片观看免费视频| 亚洲午夜精品国产电影在线观看| 91中文字幕在线一区| 少妇人妻激情乱人伦| 久在线精品视频线观看| 亚洲精品日韩久久精品| 日韩高清在线亚洲专区国产| 无码人妻熟妇av又粗又大| 在线观看视频一区二区三区| 无码内射中文字幕岛国片| 亚洲区精品区日韩区综合区| 白丝乳交内射一二三区| 性欧美vr高清极品| 丰满岳乱妇久久久| 中文国产不卡一区二区| 国产精品午夜福利片国产| 日韩国产中文字幕精品| 国产短视频精品一区二区| 精品免费看国产一区二区| 国产精品一区二区中文| 国产亚洲一在无在线观看| а√在线中文网新版地址在线| 99久久亚洲综合精品成人网| 99RE6在线观看国产精品| 国产精品久久久久久久9999| 国产伦码精品一区二区| 欧美日韩一线| 国产熟睡乱子伦视频在线播放| 深夜av在线免费观看| 亚洲国产精品综合久久2007| 国产精品中文一区二区| 久久精品国产99精品亚洲| 精品综合久久久久久98|