Picses' sky

          Picses' sky
          posts - 43, comments - 29, trackbacks - 0, articles - 24

          淺嘗MAVEN[zz]

          Posted on 2007-07-20 22:27 Matthew Chen 閱讀(361) 評論(0)  編輯  收藏 所屬分類: Build Project

          淺嘗MAVEN- -

                                                

          最近老大要求我們把一個項目從ANT移植到maven,我就把我學習的過程以及把遇到的問題簡單的敘述一下。(由于本人也是剛用MAVEN,很多東西做的不好)。

          一,安裝及簡單配置

           1.我用的是1.1beta1(版本的不同可能會導致一些問題)。
              下載地址:http://maven.apache.org/start/download.html
           2.環(huán)境變量
              加MAVEN_HOME,并將%MAVEN_HOME%\bin加入PATH變量中
           3.檢查是否安裝成功
              只要在命令提示行中打入:maven -v。如出現(xiàn)版本信息則說明安裝正確。
           4.配置local repository和remote repository
              為了讓所有的工程共享這個配置,可以在你的USER_HOME(即documents and settings\用戶名\)下建立一個build.properties文件。
              maven.repo.local=D:/Maven 1.0.2/local/repository
              maven.repo.remote=http://192.168.82.217/repo(可選)
              在這里我的remote repo是自己建的,默認的是ibiblio.org,關于remote.repo的其他站點可以參照網上其他blog。
              如果你需要代理則要加上:
              maven.proxy.host=
              maven.proxy.port=
              maven.proxy.username=
              maven.proxy.password=
              假如使用以上方法仍不能連接,那只有自己建了。(最近公司換域,就是用代理都上不去-_-#!)
              建remote.repo很容易,只需要參照http://www.ibiblio.org/maven/上的目錄結構,建立相應的站點。只不過包要自己去 http://www.ibiblio.org/maven/上手動下載。哎~ 真是慘啊。

          二,maven的簡單運用
           
              用maven -h 可以查看一些簡單的命令,用maven -g查看現(xiàn)有的插件及Goal(類似ant中的target)。

           
             1.用maven genapp 創(chuàng)建一個application (插件信息包括goals和properties可以查看http://maven.apache.org/)
           會在命令行的當前目錄中建立。
           
           maven genapp
           接下來會讓你選擇一個模版(插件信息里有) [default]
                  指定一個project id(似乎在生成的文檔中用到) [test]
                  指定一個name [test]
                  接著是指定package [maven.ex]
           
                  project.xml對該工程作了詳細描述
                  請參照:http://www.zahui.com/html/6/36570.htm
           
          2.用java:compile編譯剛剛建立的工程
             可以看到多了一個target目錄,用于存放編譯后的class文件和其他產生物。
           
          3.test:test
             由于剛剛的工程存在測試類,所以可用這個goal來進行測試。 在target目錄又多了一個test-classes和一個test-reports,相信一看名字就明白了。

           4.dist:build
              會自動完成一系列的任務,其中有任務會在target目錄生成很詳細的文檔,target\projectname-1.0\bin\projectname-1.0\下可以找到完整的html文檔。
           
           5.eclipse
              使用該Goal可以生成一個eclipse工程,直接在eclipse中導入就可以了。其中classpath是根據project.xml中定義的dependency,需要在eclipse:java-build path -classpath variable中加一個MAVEN_REPO的變量,指向你的local repo.

          三,自定義goal
           
           由于maven完全支持ant語法,對于ant的用戶將更為熟悉。
           
           要自定義goal,需要在工程目錄下建一個maven.xml文件。

           比如:
           <goal name="project:deploy">
            <copy todir="${tomcat.webapps}/app">
             <fileset dir="${webroot}"/>
            </copy>
           </goal>
            
           只不過target變成了goal而已
           
           preGoal:在指定的goal之前執(zhí)行相應的goal
           比如:
          <preGoal name="goal1">可以是自定義的也可以是插件自帶的
            <attainGoal name="goal2"/>
                    ……
            <attainGoal name="……"/>
           </preGoal>    
            
           即為在執(zhí)行goal1之前,執(zhí)行goal2

           postGoal:在指定的goal之后...
            

          四,使用maven的scm插件,連接cvs服務器
               在project.xml中的 節(jié)點指定了cvsroot,cvsroot的格式是固定的,如果服務器用低版本的cvsnt,建立的cvsroot是有絕對路徑的,比如:
                 scm:cvs:pserver:user:123456@192.168.82.217:E:/CVS/app
               會被認為是不正確的。而且密碼也不在里面給出(該插件似乎有username,password的屬性,可在properties文件中給出,不過我嘗試了沒用,或許我用錯了,也可能因為是beta版,在1.0.2的版本中是沒有這個屬性的)。
               高版本的cvsnt才有虛擬路徑,在maven中這樣的路徑才被認為是正確的:
               scm:cvs:pserver:user@192.168.82.217:/cvs:app
           
               這樣要checkout的話必須先得登陸cvs。
           
               這個插件在開發(fā)中一般是不會使用到的,由于我們要用cruisecontrol+maven實現(xiàn)daily build所以才會用到。 如果你需要使用這個插件,你會發(fā)現(xiàn)你在用checkout-project的時候,還會遇到一些問題。

          五,在eclipse中使用mevenide插件。
             
               通過eclipse的help->software updates ->find and install->search for new features->new remote site
               加入插件地址:http://mevenide.codehaus.org/release/eclipse/update/site.xml 選擇需要的版本下載,重啟工作臺后即可以使用了,使用和配置比較簡單。
               不過可能會遇到找不到org.apache.xerces.jaxp.SAXParserFactoryImpl的問題,是因為在MAVEN_HOME\lib下缺少一個目錄,下載一個1.0.2的版本就知道缺少什么文件了。不直接用1.0.2的原因是因為1.0.2在test:test的時候可能會發(fā)生有些class找不到的情況,解決的方法沒有前者的快些。
               還有個問題,上次有人問我怎樣一下子把project.xml中dependency的jar加到eclipse的classpath中,想到elipse的maven workshop插件,但使用起來也不是很好,在用overwrite classpath with POM時出錯,也得用add dependency to classpath(此方法根據配置中的local repo,讓你選擇所需的jar包和version,在向project.xml中添加dependency時有用)一個一個加。其實可以用剛剛提到的maven eclipse來重新生成eclipse工程,它會把project.xml中的dependency自動加到eclipse插件里。


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


          網站導航:
           
          主站蜘蛛池模板: 远安县| 赣榆县| 泽库县| 新乐市| 房产| 团风县| 棋牌| 白沙| 通河县| 民勤县| 安国市| 巴南区| 锦州市| 田东县| 乃东县| 珲春市| 新化县| 惠水县| 明光市| 望城县| 明溪县| 平阴县| 涪陵区| 都昌县| 新乡县| 驻马店市| 平远县| 广州市| 阿拉善右旗| 大洼县| 定日县| 驻马店市| 马边| 治县。| 佛坪县| 宜章县| 朔州市| 城口县| 长武县| 星子县| 德格县|