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

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

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

      理解maven的核心概念

       

      好久沒進行java方面的開發了,最近又完成了一個java相關的任務,順便重新體會了 maven 這一利器。

      在使用過程中發現以前對maven的理解不夠深入,借此機會重新梳理了一下maven的核心概念。相信理解了這些核心概念, 即使長時間不使用,以后再重新上手也會非常容易。

      本文以類圖的方式,介紹maven核心的12個概念以及相互之間的關系。

      1 maven管理的目標:工程(Project)

       

      maven是一個軟件工程(Software Project)管理工具。 對于maven來說,一個軟件工程的唯一標識是由開發者(groupId)、生成物(artifactId)、版本(version) 共同決定的。

      每個工程都有一個打包類型,可以是jar, war, ear 或 pom。打包類型決定了工程最終產物的類型。 其中pom類型用于構件多模塊工程。

      工程之間有兩種關系:依賴和聚合。

      1.1 工程依賴關系

      依賴關系的管理是maven最為人稱道的地方。一個工程可以依賴多個其他工程, 通過工程的唯一標識(groupId+artifactId+version)可以明確指明依賴的庫及版本,而且能夠處理 依賴關系的傳遞。 maven可以指定依賴的作用范圍(scope),包括以下幾種:

       
      scope編譯期測試期運行期說明
      *compile V V V 默認scope
      test   V   只在測試期依賴,如junit包
      provided V V   運行期由容器提供,如servlet-api包
      runtime   V V 編譯期間不需要直接引用
      system V V   編譯和測試時由本機環境提供

      由于依賴關系的傳遞性可能會導致依賴的版本、scope等發生沖突,maven提供了仲裁機制,同時也 允許自己通過配置進行依賴管理。

      1.2 工程聚合關系

      前面提到pom類型用于于構件多模塊工程,這體現了project之間的一種聚合關系: 將一系列小的模塊聚合成整個產品。

      通過聚合后的工程可以同時管理每個相關模塊的構建、清理、文檔等工作。 聚合關系通過在子工程中指定一個pom類型的project作為父project來定義。

      2 maven的核心:生命周期和階段

      maven將工程(Project)的構建過程理解為不同的生命周期(LifeCycle)和階段(Phase)。 在工程的構建過程中,存在著不同的生命周期,這些生命周期互相獨立,之間也沒有一定的順序關系。 每個生命周期又劃分為不同的階段(Phase)。階段之間有明確的順序關系, 同一生命周期內的階段必須按順序依次執行。

      maven內置了三個生命周期,并為每個生命周期內置了一些階段。 下面列舉出maven內置的生命周期及主要的階段: 

      • default:構建(Build)
        1. validate:驗證項目是否正確,所有必需的信息是否可用。
        2. compile:編譯項目中的代碼。
        3. test:用相關的單元測試框架測試編譯后的代碼,這些運行的測試并不會隨項目打包和布署。
        4. package:將編譯后的代碼打包成相應的格式文件,如jar包。
        5. integration-test: 如果需要在一個綜合環境中運行我們的測試,這個階段將會運行和布署項目到該環境中。
        6. verify: 檢查項目的包是否正確和符合要求。
        7. install:將包安裝到本地maven倉庫,可以讓其他項目作為依賴使用該包。
        8. deploy:將包發布到遠程的maven倉庫,并提供給其他開發者使用。
      • clean:清理
        1. pre-clean 準備清理
        2. clean 執行清理工作
        3. post-clean 執行清理后的后續工作
      • site:生成項目文檔和站點
        1. pre-site 準備生成
        2. site 生成項目站點和文檔
        3. post-site 執行生成文檔后的后續工作
        4. site-deploy 發布項目文檔

      更詳細的phase說明參考: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

      3 功能實現:插件和Goal

      Maven中定義的工程周期和階段只是抽象的概念,不涉及具體的功能。 具體的功能由插件(Plugin)實現。一個插件可以實現多個目標(Goal)。

      為了解耦插件的功能和工程階段,實現高度的可配置性,maven規定插件只是實現目標的功能, 通過配置來決定在哪個階段執行(Execution)哪些目標操作。 甚至可以把一個Goal綁定到多個Phase,以實現復用。

      maven內置了一些默認的插件,并根據不同的工程packing類型在各個phase中默認綁定了一些goal。 下表中列出default生命周期中各階段默認綁定的goal,其中goal按照管理使用pluginname:goalname的方式標記:

       
      PahsePlugin:Goal
      process-resources resources:resources
      compile compiler:compile
      process-test-resources resources:testResources
      test-compile compiler:testCompile
      test surefire:test
      package ejb:ejb/ejb3:ejb3/jar:jar/par:par/rar:rar/war:war
      install install:install
      deploy deploy:deploy

      最后需要說明的是,maven的插件是一種packaging類型為maven-plugin的project, 可以使用maven project的依賴,配置插件等等一切特性。

      4 倉庫(Repository)

      倉庫主要用于獲取工程依賴的其他工程的生成物,也可用來部署(deploy)maven工程的生成物。 生成物包括各種打包的生成物以及pom文件。

      如果有必要,一個工程可以部署到多個倉庫。

      倉庫可以分為本地庫(local)和遠程庫(remote)。本地庫通常位于本機的~/.m2/repository文件夾, 遠程庫最常見的是maven中央庫(),此外也會有一些私服庫用于企業內部。

      http://repository.jboss.com/maven2/

      5 小結

      本文梳理了maven的核心概念,整個maven核心概念的全貌如下:

       

       
      概念說明
      LifeCycle 生命周期,maven內置default,sie,clean三個生命周期
      Phase 階段,每個生命周期有不同的階段
      Plugin 插件,實現實際的構建功能
      Goal 一個插件可以實現多個goal,goal具備具體的功能
      Execution 通過配置,決定在某個Phase執行哪些Goal
      Project maven管理的目標:軟件工程,小的工程可以聚合成大工程
      PackageType 為了便于管理工程,按照構建目標區分成不同的工程類型,如jar,war,ear等
      Dependency 依賴,project之間存在依賴關系
      DependencyScope maven對依賴定義了不同的作用范圍
      Management 可以配置一個工程如何管理依賴關系
      Repository 倉庫,存放包,分為本地庫和遠程庫
      Build 構建的動作。使用maven管理工程,主要是指定將project構建到某個phase

      Author: Holbrook Wong <holbrook@holbrook.imac>

      Date: 2012-12-24 09:20:24 CST

      HTML generated by org-mode 6.33x in emacs 23

      posted @ 2012-12-24 09:30  心內求法  閱讀(36026)  評論(5)    收藏  舉報
      主站蜘蛛池模板: 中文字幕第一页国产精品| 中国少妇人妻xxxxx| 霍州市| 久久精品国产99国产精品亚洲| 国产精品呻吟一区二区三区| 国产精品亚洲А∨天堂免| 久久96热在精品国产高清| 国产片AV国语在线观看手机版| 噜噜综合亚洲av中文无码| 久久人人爽人人爽人人av| 永久免费无码av网站在线观看| 亚洲 日韩 国产 制服 在线| 不卡在线一区二区三区视频 | а√在线中文网新版地址在线| 人妻中出无码一区二区三区| 精品无码国产一区二区三区av | 欧美精品videosbestsex日本| 国产粉嫩一区二区三区av| 久久久精品人妻一区二区三区 | 日本免费一区二区三区最新vr| 中文无码热在线视频| 综合久久av一区二区三区| 一本无码在线观看| 国产精品最新免费视频| 日本乱一区二区三区在线| 使劲快高潮了国语对白在线| 亚洲啪啪精品一区二区的| 亚洲人妻中文字幕一区| 国产高清精品在线91| 2020国产成人精品视频| 亚洲av无码乱码在线观看野外| 亚洲男人av香蕉爽爽爽爽| 精品日韩色国产在线观看| 动漫AV纯肉无码AV电影网| 成av免费大片黄在线观看| 中文字幕无码免费不卡视频| 日本少妇自慰免费完整版| 推油少妇久久99久久99久久| 亚洲人成网站在线无码| 日韩人妻精品中文字幕| 化州市|