<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    優秀是一種習慣

     

    Maven 學習筆記(一)

    Maven 簡介

    Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。 當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然后 Maven 可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。

    Maven 提供了構建工具(如:Ant)所提供功能的超集。 除了提供構建功能,Maven還可以生成報告,生成Web站點,并且幫助推動工作團隊成員間的交流。

    約定優于配置(Convention Over Configuration

    約定優于配置是一個簡單的概念。 系統,類庫,框架應該假定明智合理的默認值,而非總是要求提供不必要的配置。

    Maven通過給項目提供明智的默認行為來融合這個概念。 在沒有自定義的情況下,有下列默認配置:

    一、源代碼存放目錄:/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src/main/java

    二、資源文件存放目錄:/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src/main/resources

    三、測試代碼存放目錄:/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src/test

    四、編譯好的字節碼存放目錄:/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/target/classes

    五、項目假定會產生一個 JAR 文件。故 Maven會在 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/target 創建一個可分發的 JAR 文件。

    比如,在我本機,用的是 Windows XP 系統,登錄系統的用戶名為 chenlong 我有一個項目叫 simple-weather我本機的相關路徑如下:

    六、源代碼存放目錄:C:\Documents and Settings\chenlong\simple-weather\src\main\java

    七、資源文件存放目錄:C:\Documents and Settings\chenlong\simple-weather\src\main\resources

    八、測試代碼存放目錄:C:\Documents and Settings\chenlong\simple-weather\src\test\java

    九、測試資源存放目錄:C:\Documents and Settings\chenlong\simple-weather\src\test\resources

    十、編譯好的字節碼存放目錄:C:\Documents and Settings\chenlong\simple-weather\target\classes

    十一、JAR 文件存放目錄:C:\Documents and Settings\chenlong\simple-weather\target

    目錄結構如圖所示:

    Maven 對約定優于配置的應用不僅僅是簡單的目錄位置,Maven 的核心插件使用了一組通用的約定,以用來編譯源代碼,打包可分發的構件,生成 web 站點,還有許多其他的過程。 Maven 的力量來自它的"武斷",它有一個定義好的生命周期和一組知道如何構建和裝配軟件的通用插件。如果你遵循這些約定,Maven 只需要你做幾乎為零的工作——僅僅是將你的源代碼放到正確的目錄,然后Maven 將會幫你處理剩下的事情。當然如果你不想遵循約定,Maven 也會允許你自定義默認值來適應你的需求。

    一個一般的接口

    Maven 為構建軟件提供一個一般的或者說通用的接口。 如果你想參與一個新的項目或者是從頭編譯構建一個開源項目,只要這個項目是使用 Maven 來管理的,那么你就無需花時間去學習這個項目的構建系統,因為他們都遵循 Maven 定義的相同的規范。例如,你從 Subversion 檢出一個項目如 Apache Wicket,然后你只需要運行一下 mvn install 命令來構建它,一切就 OK 了。

    基于Maven插件的全局性重用

    Maven 有很多優點,包括依賴管理和通過插件重用一般的構建邏輯。Maven 將一般的構建任務抽象成插件,同時這些插件得到了很好的維護以及全局的共享,你不需要從頭開始自定義你項目的構建系統。這就是基于 Maven 插件的全局性重用。

    一個項目的概念模型

    Maven 維護了一個項目的模型,你不僅僅需要把源碼編譯成字節碼,你還需要開發軟件項目的描述信息,為項目指定一組唯一的坐標。你要描述項目的的屬性。項目的許可證是什么?誰開發這個項目,為這個項目做貢獻?這個項目依賴于其它什么項目沒有?Maven不僅僅是一個“構建工具”,它不僅僅是在類似于 make 和 Ant 的工具上的改進,它是包含了一組關于軟件項目和軟件開發的語義規則的平臺。這個基于每一個項目定義的模型實現了如下特征:

    依賴管理

    由于項目是根據一個包含組標識符,構件標識符和版本的唯一的坐標定義的,故項目間可以使用這些坐標來聲明依賴。

    遠程倉庫

    和項目依賴相關的,我們可以使用定義在項目對象模型(POM)中的坐標來創建 Maven 構件的倉庫。

    全局性構建邏輯重用

    插件被編寫成和項目對象模型(POM)一起工作,它們沒有被設計成操作某一個已知位置的特定文件。一切都被抽象到模型中,插件配置和自定義行為都在模型中進行。

    工具可移植性/集成

    像 Eclipse,NetBeans,和 InteliJ 這樣的工具現在有共同的地方來找到項目的信息。在 Maven 出現之前,每個 IDE 都有不同的方法來存儲實際上是自定義項目對象模型(POM)的信息。Maven 標準化了這種描述,而雖然每個 IDE 仍然繼續維護它的自定義項目文件,但這些文件現在可以很容易的由模型生成。

    便于搜索和過濾構件

    像 Nexus 這樣的工具允許你使用存儲在 POM 中的信息對倉庫中的內容進行索引和搜索。

    一些小技巧:

    從命令行運行 mvn install 命令 Maven 就會自動處理資源文件,編譯源代碼,運行單元測試,創建一個 JAR ,然后把這個 JAR 安裝到本地倉庫以為其它項目提供重用性。不用做任何修改,你可以運行 mvn site ,然后在 target/site 目錄找到一個 index.html 文件,這個文件鏈接了 JavaDoc 和一些關于源代碼的報告。

    如果你想要運行單元測試,你需要做的只是編寫測試類并放到測試目錄,添加一個對于 TestNG 或者 JUnit 的測試范圍依賴,然后運行 mvn test 。

    posted on 2009-08-16 23:45 黃土高坡 閱讀(340) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    收藏夾

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲日韩一页精品发布| 国产又大又长又粗又硬的免费视频| www亚洲精品少妇裸乳一区二区| 亚洲日韩精品无码专区| 性短视频在线观看免费不卡流畅 | 亚洲国产精品乱码一区二区| 免费人人潮人人爽一区二区| 日韩中文字幕在线免费观看| 亚洲AV无码成人精品区狼人影院| 在线免费视频一区二区| 亚洲AV综合色区无码一二三区| 国产无遮挡吃胸膜奶免费看| 国产精品亚洲综合一区在线观看 | 亚洲精品A在线观看| a免费毛片在线播放| 亚洲人成伊人成综合网久久久 | 特级毛片aaaa级毛片免费| www.亚洲一区| 久久久精品免费国产四虎| 777亚洲精品乱码久久久久久 | 日本一道在线日本一道高清不卡免费| 亚洲日韩国产欧美一区二区三区| 日本一道高清不卡免费| 成人免费观看男女羞羞视频| 在线观看午夜亚洲一区| 三年片在线观看免费大全电影 | 处破女第一次亚洲18分钟| 亚洲国产天堂久久综合| 久久精品国产免费| 国产婷婷综合丁香亚洲欧洲| 国产大片51精品免费观看| 精品97国产免费人成视频| 91久久亚洲国产成人精品性色| 成人毛片18女人毛片免费| 九九久久精品国产免费看小说 | 亚洲一级视频在线观看| 国产免费久久精品久久久| 国内精品久久久久影院免费| 亚洲一区二区三区免费视频| 亚洲第一黄片大全| 最近免费中文字幕大全高清大全1|