Loading...

          java .net

          maven的helloword

          最近在學(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

          方式一:在線(xiàn)安裝 更新地址是: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 on 2011-04-18 16:09 閱讀(1334) 評(píng)論(5)  編輯  收藏 所屬分類(lèi): 學(xué)習(xí)java

          評(píng)論

          # re: maven的helloword 2011-06-10 10:49 air

          Hi,請(qǐng)問(wèn),pre圖,什么軟件畫(huà)滴?  回復(fù)  更多評(píng)論   

          # re: maven的helloword 2011-06-10 11:30

          @air
          eclipse插件m2eclipse 中有這樣一個(gè)視圖  回復(fù)  更多評(píng)論   

          # re: maven的helloword 2011-06-10 11:40 air

          @豬
          謝謝~  回復(fù)  更多評(píng)論   

          # re: maven的helloword 2011-11-02 13:29 秦?zé)j

          寫(xiě)的不錯(cuò)。
          不過(guò)我運(yùn)行時(shí)候報(bào)
          web.xml does not exist at location  回復(fù)  更多評(píng)論   

          # re: maven的helloword 2012-01-10 09:39 Luowen

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

          請(qǐng)問(wèn)附件在哪里呢?
          能麻煩郵件一份吧,謝謝了。
          Luowenbiz@gmail.com  回復(fù)  更多評(píng)論   

          公告

          希望有一天

          我能用鼠標(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)論排行榜

          主站蜘蛛池模板: 库伦旗| 吉林省| 湄潭县| 剑河县| 曲松县| 泾源县| 永吉县| 青岛市| 腾冲县| 大石桥市| 琼海市| 高碑店市| 湘西| 搜索| 长寿区| 无棣县| 磐安县| 浠水县| 平乡县| 湄潭县| 庐江县| 伊宁市| 醴陵市| 武义县| 琼结县| 余干县| 宾川县| 定州市| 阿城市| 芒康县| 家居| 桂东县| 江达县| 屯门区| 怀柔区| 清水河县| 华容县| 宜阳县| 始兴县| 内乡县| 夏津县|