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

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

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

    優(yōu)秀是一種習(xí)慣

     

    Maven 學(xué)習(xí)筆記(一)

    Maven 簡介

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

    Maven 提供了構(gòu)建工具(如:Ant)所提供功能的超集。 除了提供構(gòu)建功能,Maven還可以生成報(bào)告,生成Web站點(diǎn),并且?guī)椭苿?dòng)工作團(tuán)隊(duì)成員間的交流。

    約定優(yōu)于配置(Convention Over Configuration

    約定優(yōu)于配置是一個(gè)簡單的概念。 系統(tǒng),類庫,框架應(yīng)該假定明智合理的默認(rèn)值,而非總是要求提供不必要的配置。

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

    一、源代碼存放目錄:/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

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

    五、項(xiàng)目假定會產(chǎn)生一個(gè) JAR 文件。故 Maven會在 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/target 創(chuàng)建一個(gè)可分發(fā)的 JAR 文件。

    比如,在我本機(jī),用的是 Windows XP 系統(tǒng),登錄系統(tǒng)的用戶名為 chenlong 我有一個(gè)項(xiàng)目叫 simple-weather我本機(jī)的相關(guān)路徑如下:

    六、源代碼存放目錄: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

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

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

    目錄結(jié)構(gòu)如圖所示:

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

    一個(gè)一般的接口

    Maven 為構(gòu)建軟件提供一個(gè)一般的或者說通用的接口。 如果你想?yún)⑴c一個(gè)新的項(xiàng)目或者是從頭編譯構(gòu)建一個(gè)開源項(xiàng)目,只要這個(gè)項(xiàng)目是使用 Maven 來管理的,那么你就無需花時(shí)間去學(xué)習(xí)這個(gè)項(xiàng)目的構(gòu)建系統(tǒng),因?yàn)樗麄兌甲裱?nbsp;Maven 定義的相同的規(guī)范。例如,你從 Subversion 檢出一個(gè)項(xiàng)目如 Apache Wicket,然后你只需要運(yùn)行一下 mvn install 命令來構(gòu)建它,一切就 OK 了。

    基于Maven插件的全局性重用

    Maven 有很多優(yōu)點(diǎn),包括依賴管理和通過插件重用一般的構(gòu)建邏輯。Maven 將一般的構(gòu)建任務(wù)抽象成插件,同時(shí)這些插件得到了很好的維護(hù)以及全局的共享,你不需要從頭開始自定義你項(xiàng)目的構(gòu)建系統(tǒng)。這就是基于 Maven 插件的全局性重用。

    一個(gè)項(xiàng)目的概念模型

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

    依賴管理

    由于項(xiàng)目是根據(jù)一個(gè)包含組標(biāo)識符,構(gòu)件標(biāo)識符和版本的唯一的坐標(biāo)定義的,故項(xiàng)目間可以使用這些坐標(biāo)來聲明依賴。

    遠(yuǎn)程倉庫

    和項(xiàng)目依賴相關(guān)的,我們可以使用定義在項(xiàng)目對象模型(POM)中的坐標(biāo)來創(chuàng)建 Maven 構(gòu)件的倉庫。

    全局性構(gòu)建邏輯重用

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

    工具可移植性/集成

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

    便于搜索和過濾構(gòu)件

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

    一些小技巧:

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

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

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


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


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    收藏夾

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费一级全黄少妇性色生活片| 99免费观看视频| 亚洲小视频在线观看| 最近中文字幕免费mv视频8| 免费精品国自产拍在线播放| 久久亚洲AV成人无码电影| 女人18毛片特级一级免费视频| 中文字幕乱理片免费完整的| 亚洲第一区视频在线观看| 人人狠狠综合久久亚洲高清| 久久国产乱子伦免费精品| 国产精品亚洲专区一区| 99人中文字幕亚洲区| 国产精品亚洲综合一区| 野花高清在线电影观看免费视频| 一级黄色免费大片| 亚洲乱码一区二区三区国产精品| 亚洲一级片内射网站在线观看| 日本亚洲免费无线码| 亚洲高清免费视频| 亚洲乱码在线观看| 久久久久亚洲Av片无码v| 国产一级淫片a视频免费观看| 四虎在线视频免费观看视频| 9i9精品国产免费久久| 亚洲av永久中文无码精品综合| 亚洲国产精品人久久| 亚洲日韩在线第一页| 免费精品一区二区三区在线观看 | 亚洲精品美女久久7777777| 亚洲AV无码国产精品色午友在线| 日本一线a视频免费观看| 18禁止看的免费污网站| 最近更新免费中文字幕大全| 亚洲AⅤ男人的天堂在线观看| 亚洲成人免费网址| 亚洲国产精品无码久久一线| 亚洲国产成人久久一区WWW| 大学生a级毛片免费观看| 免费视频爱爱太爽了| 久久精品毛片免费观看|