maven入門實戰

openkk 12年前發布 | 6K 次閱讀 5.2.1版本發布

項目一大,管理起來就不太容易了。編譯、測試、打包、發布,一個枯燥的周而復始的工

作讓無數程序員崩潰了一次又一次。于是,ant出現了~構建工程師終于可以輕松一下了。
他們歡快得敲著xml式的命令:在xx位置創建一個xx文件夾,把xx文件夾下的源碼進行編
譯,編譯完的class文件放在xx位置,在xx位置的已發布包備份一下,然后把新發布的包
放到xx位置……

但是項目不同,構建工程師不同,他們寫的ant腳本就不同,構建方式就不同,一個新人
過來項目組,總是不可避免的要花一部分時間來熟悉新項目的構建方式,浪費了很多無謂
的時間,大家怨聲載道……于是,maven出現了……

maven認為約定優于配置,它不是為你構建的不同任務編寫腳本,它提倡一組標準,一個
一般的接口,一個生命周期,一個標準的倉庫格式,一個標準的目錄布局,等等

一個新人弄懂了一個maven項目的構建方式,也就弄懂了所有的maven項目的構建方式……

以后你拿到一個項目之后,你就會自然而然的知道用mvn install來構建它……</div>

Maven 的核心財產是聲明性構建,依賴管理,倉庫管理,基于插件的高度的重用

舉個簡單的例子,ant啥事都是自己干,像是攢一臺組裝機,而maven則更像是一品牌機~

maven的目標:就是干掉構建工程師(嘎嘎,開個玩笑)

OK.Let's get started!

1、去maven.apache.org/download.html下載maven,解壓縮
2、設置環境變量,M2_HOME=maven根目錄;path=%M2_HOME%\bin(Windows方式),用
Linux的同學就按照Linux的方式設置一下就好~
3、打開命令行,運行:mvn -v,如果有版本輸出,OK,說明你安裝成功了
4、初始化maven:運行一下mvn help:system,初始化一下
5、開始一個小項目~
    1)mvn archetype:generate,簡單解釋一下這個命令,archetype是一個maven插件,
    maven的絕大部分功能都是靠插件來完成的,這個插件提供了一些項目的核心骨架,

    比如一個簡單的項目是這樣的目錄結構:</div>

    frame-simple
    |-src
      |-main
        |-java
        |-一些帶有包結構的java文件
        |-resources
        |-一些配置文件,比如log4j.properties
      |-test
        |-java
        |-resources
    |-pom.xml


</div>

     但是對于一個web項目,目錄結構就會稍有不同,maven要求把jsp文件放在src/main/webapp
     下,當然,WEB-INF目錄也是放在這里

     不同的項目,目錄結構是不同的,我們稱為項目骨架類型不同,mvn archetype:generate

     這么命令就會有很多骨架類型讓你選擇,看到很多輸出不要驚慌,選擇默認的編號(這個</div>

     編號就表示一個最簡單的骨架類型),回車,接下來讓你輸入:
     groupId/artifactId/version/package

     先不要問為什么,groupId輸入:com.baidu.testmvn;artifactId輸入:testmvn-simple,version
     直接按照默認的來就行,直接回車,package輸入:com.baidu.testmvn,然后一個新的項目就骨架就
     搭建起來了

     如果我現在要搭建一個web項目,可以直接這樣輸入一條命令來搞定:
     mvn archetype:generate -DgroupId=hx.frame -DartifactId=frame-web -DarchetypeArtifactId=maven-archetype-webapp

     groupId/artifactId/version這幾個東東組成了maven中的坐標,這個解釋起來挺麻煩,大伙可以google一下,
     maven利用坐標來唯一的定位一個jar包。全球有個maven中央庫,那里維護了各種類型各種版本的jar包,
     他們需要一個唯一的標識來識別嘛是吧,所以坐標就應運而生了。

     項目的根下有個pom.xml不知道你注意到沒有,這個文件在整個項目中灰常重要,它規定了當前項目
     依賴于哪些jar包,用了哪些maven插件,使用了什么樣的編譯參數等等。你打開自己的文件看一下就好了,

     我就不貼出來了~默認情況下,maven為你引入了一個junit,可惜版本太低,不過沒有關系,直接改成</div>

     4.8的版本就行,在這里稍微這么一改動,maven就知道你要用哪個版本了,這,就是聲明式構建的體現哦

6、導入你喜歡的IDE,我習慣用idea,直接File->New Project,選擇已經存在的maven項目,導入,O了
你可能習慣用eclipse,自己google一下怎么導入吧

在idea右側有一個maven project的小窗口,里邊有一些命令可以直接運行:
mvn clean
mvn validate
mvn compile
mvn test
mvn package
mvn install
mvn site
mvn depoly

其實這些命令就推動了maven項目的生命周期~google一下“maven 生命周期”</div>

先清理一下,然后編譯一下,測試一把,打個包,發布,是吧,正好也是你平時的做法,對吧,呵呵

maven對于項目的lib庫的依賴管理很有一手,具體怎么管理的這里就不展開了,google一下“maven 依賴管理”
不過可以列幾個命令share一下:
mvn dependency:list 查看當前項目的已解析依賴
mvn dependency:tree 查看當前項目的依賴樹
mvn dependency:analyze 分析當前項目的依賴狀況,可以找到一些warning:
a)使用了未聲明的依賴
b)沒有使用已聲明的依賴(這些或許可以刪掉,但是要仔細分析,像spring-core,spring-beans看起來是沒有用到,
但是他們是spring運行必須的)

OK,最后隆重推出一個maven插件,jetty-maven-plugin
這個插件可以啟動一個jetty web服務器,啟動速度喜人,一旦啟動,修改了jsp,頁面上可以直接
反應出來,修改了servlet代碼,運行一下mvn compile也可以立馬反應出來,方便開發

在pom.xml中這樣配置:
<build>
<finalName>frame-web</finalName>

<plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>7.1.6.v20100715</version>

<configuration>
    <scanIntervalSeconds>3</scanIntervalSeconds>
    <webAppConfig>
    <contextPath>/test</contextPath>
    </webAppConfig>

</configuration>
</plugin>

</plugins> </build></pre> </div>

然后命令行運行:mvn jetty:run
訪問一下:localhost:8080/test/就可以看到你的index.jsp了

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!