Loading...

          java .net

          2011年4月18日

          最近在學(xué)習(xí)如何使用maven,做了一個(gè)demo(基于S2S整合),總結(jié)一下與大家分享,期待與大家討論以期快速進(jìn)步。

          一、maven介紹

          1、maven是什么

          http://maven.apache.org/
          官方解釋?zhuān)篗aven是一個(gè)項(xiàng)目管理工具,它包含了一個(gè)項(xiàng)目對(duì)象模型 (Project Object Model),一組標(biāo)準(zhǔn)集合,一個(gè)項(xiàng)目生命周期(Project Lifecycle),一個(gè)依賴(lài)管理系統(tǒng)(Dependency Management System),和用來(lái)運(yùn)行定義在生命周期階段(phase)中插件(plugin)目標(biāo)(goal)的邏輯。

          2、使用maven有什么好處,解決什么問(wèn)題

          jar統(tǒng)一管理了:

          如果建立了一個(gè)本地的jar倉(cāng)庫(kù),那么所有人都是從倉(cāng)庫(kù)里面下載jar,拷貝項(xiàng)目時(shí)只需要copy幾K的源碼即可!其次,依然是倉(cāng)庫(kù),使得每個(gè)人的jar版本都是一致的,不會(huì)出現(xiàn)因?yàn)榘姹静煌鸬哪涿畹腻e(cuò)誤。
          項(xiàng)目的自動(dòng)化:

          只需要mvn package命令,在eclipse里面,看run里面,只需要選擇就行了!它會(huì)自動(dòng)的從編譯,測(cè)試開(kāi)始,一直到打包,自動(dòng)的運(yùn)行,保證你的包沒(méi)有問(wèn)題。

          我們?cè)谧龆鄠€(gè)不同的Java項(xiàng)目時(shí),每個(gè)項(xiàng)目所用到的庫(kù)文件基本都是大同小異的,通常的做法是每個(gè)項(xiàng)目下面都會(huì)復(fù)制一份這些庫(kù)文件,甚至?xí)堰@些庫(kù)文件都提交到vss上去,這樣帶來(lái)的問(wèn)題不僅是增大了項(xiàng)目占用的硬盤(pán)空間,而且也使包管理很混亂。

          我們可以這樣查看jar包的依賴(lài)關(guān)系,是不是很爽?!
          image

          還可以單元測(cè)試覆蓋率報(bào)表:

          image

          2、helloword

          1、下載Maven 附件中的maven3.jar 解壓到任意目錄

          2、安裝eclipse插件m2eclipse

          方式一:在線安裝 更新地址是:http://m2eclipse.sonatype.org/sites/m2e
          方式二:本地安裝 help-->install new softeware-->add-->name填寫(xiě)maven-->archive..-->jar:file:/../m2e.zip!/-->ok
          安裝完成重啟eclipse,在Window-->Preferences-->Maven下配置

          image

          禁用eclipse啟動(dòng)時(shí)更新maven index 主要是每次eclipse啟動(dòng)時(shí)都更新很煩人

          image

          添加自己的maven

          3、新建maven項(xiàng)目

          按照下圖步驟

          image

          • groupId定義了項(xiàng)目屬于哪個(gè)組,這個(gè)組往往和項(xiàng)目所在的組織或公司存在關(guān)聯(lián)。譬如在googlecode上建立了一個(gè)名為myapp的項(xiàng)目,那么groupId就應(yīng)該是com.googlecode.myapp.
          • artifactId定義了當(dāng)前Maven項(xiàng)目在組中唯一的ID,groupId為com.googlecode.myapp的例子中,你可能會(huì)為不同的子項(xiàng)目(模塊)分配artifactId,如myapputil、myappdomain、myappweb等。
          • version指定了項(xiàng)目當(dāng)前的版本——1.0SNAPSHOT。SNAPSHOT意為快照,說(shuō)明該項(xiàng)目還處于開(kāi)發(fā)中,是不穩(wěn)定的版本。隨著項(xiàng)目的發(fā)展,version會(huì)不斷更新,如升級(jí)為1.0、1.1SNAPSHOT、1.1、2.0等。
          • name元素聲明了一個(gè)對(duì)于用戶(hù)更為友好的項(xiàng)目名稱(chēng)

          點(diǎn)擊Finish完成

          4、maven項(xiàng)目結(jié)構(gòu)

          下圖為基于maven項(xiàng)目結(jié)構(gòu),這里跟我們以前的項(xiàng)目結(jié)構(gòu)很不一樣,以前的項(xiàng)目結(jié)構(gòu)約定俗成的只有兩塊 一個(gè)src 一個(gè)webRoot,當(dāng)然這些都可以隨意配置,比如WebRoot有的叫WebContent

          image
          這里maven倡導(dǎo)約定優(yōu)于配置,maven的約定就是以下目錄結(jié)構(gòu)
          src/main/java 下存放java類(lèi)
          src/main/webapp 下存放頁(yè)面文件(需要手動(dòng)創(chuàng)建)
          src/main/resources 下存放資源文件
          src/test/java 下存放單元測(cè)試代碼
          src/test/resources 下存放測(cè)試資源文件

          5、添加jar包

          只需維護(hù)pom.xml
          比如添加struts2-core
          <dependency>
          <groupId>org.apache.struts</groupId>
          <artifactId>struts2-core</artifactId>
          <version>2.0.11.2</version>
          </dependency>

          我在172.20.66.230上部署了一個(gè)maven倉(cāng)庫(kù),訪問(wèn)地址http://172.20.66.230:8081/nexus/

          maven會(huì)根據(jù)pom.xml中的配置訪問(wèn)230的倉(cāng)庫(kù)下載對(duì)應(yīng)的jar source 以及doc,下載到哪?這要看maven3/conf/settings.xml 55:

          <localRepository>F:/Maven3/repository</localRepository>

          6、編寫(xiě)代碼

          附件中有一個(gè)struts2+spring 的demo,解壓然后import eclipse

          在項(xiàng)目名上右鍵 run as -->Run Configurations

          image

          按圖配置,點(diǎn)擊Run即可。瀏覽器中訪問(wèn)http://localhost:8080/MavenSSH/

          Maven運(yùn)行的生命周期

          • 復(fù)制src/main/resources資源文件到輸出目錄

          • 編譯src/main/java下的源代碼

          • 復(fù)制src/test/resources下的測(cè)試用資源文件到測(cè)試輸出目錄

          • 編譯src/test/java下的測(cè)試用例

          • 運(yùn)行測(cè)試用例

          • 打包生成

          ===========================

          • 以上是一個(gè)簡(jiǎn)單的例子,只是用它獲取依賴(lài)的jar包 。maven還有很多諸如項(xiàng)目管理方面的功能,比如文檔編制、發(fā)布管理、配置管理...

          • 第一個(gè)次運(yùn)行項(xiàng)目會(huì)比較慢,因?yàn)橐螺djar包。

          • MavenSSH.rar是一個(gè)struts2與spring集成的例子,頁(yè)面用到了sitemesh div+css 也值得學(xué)習(xí)

          • 項(xiàng)目debug是運(yùn)行在jetty(類(lèi)似于tomcat的容器)中。

          posted @ 2011-04-18 16:09 豬 閱讀(1332) | 評(píng)論 (5)編輯 收藏

          公告

          希望有一天

          我能用鼠標(biāo)雙擊我的錢(qián)包

          然后選中一張100元

          按住“ctrl+c”

          接著不停的“ctrl+v”

          嘻嘻~~~笑醒~~~



          導(dǎo)航

          <2011年4月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆分類(lèi)(102)

          隨筆檔案(398)

          文章分類(lèi)

          文章檔案(10)

          有趣網(wǎng)絡(luò)

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 揭阳市| 丰台区| 扎囊县| 馆陶县| 府谷县| 宁城县| 犍为县| 马龙县| 鹤庆县| 江津市| 曲靖市| 潮安县| 元阳县| 宁德市| 长宁县| 南澳县| 蚌埠市| 黔西| 东莞市| 崇明县| 富源县| 砀山县| 饶平县| 靖州| 于都县| 云浮市| 健康| 集贤县| 广饶县| 凤翔县| 元朗区| 营口市| 永定县| 龙门县| 常德市| 永城市| 西峡县| 营口市| 时尚| 盐津县| 陕西省|