Maven真的有那麼好嗎

http://1.1lifes.sinaapp.com/?p=202



之前一直聽說maven的大名,直到它後來者居上,但因爲工作環境,一直沒有使用過maven,對它的很多功能都很期待。這不,這次換了工作新公司使用maven,也就自然而然的切換到maven了。使用maven時間不長,但對於maven我還是感覺到很多的不爽,姑且來說說自己淺顯的認識。

       先說說maven的優點吧。

        一、maven支持工程模版。這個也是“約定優於配置”精神的體現,maven的eclipse插件和命令行都支持使用選擇的Archetype信件maven工程。這個主要是有利於團隊合作開發,規定了各個文件夾的用途。其實在沒maven之前,這種工程文件佈局就已經是一種廣泛的共識了。只是它略帶強制的意味。      

—- project

             |– pom.xml (pom)

             |– src

                    |– main

                                |– java

                                |– resources

                     |– test

                                |– java

                                |– resources

       二、依賴庫的管理,這應該是它最大的優點了。這個簡直是顛覆性的。想想沒有它之前我們下載jar包是多麼的痛苦,更別提升級jar包了。有了maven只要在pom最相應的添加和修改即可。但這個有一點小小的不爽,如果是之前下載jar包,一股腦下載和依賴的就行,現在要找groupid artifact version。幸好這個網站不錯,推薦:http://mvnrepository.com

       三、擴展性很好。可以方便的支持各類插件,涉及到方方面面,比如編譯、打包、依賴檢查、web容器啓動,用例執行等等。

        四、pom文件的繼承。大項目,一般子項目(maven module)很多,爲了防止父pom過大不易維護,子項目單獨使用的jar只在自己的pom設置即可。

        豐富的資料,權威指南 等等其他方面的優點也有,這裏不一一列舉了 ………….

        但它確實還有很多不爽的地方,足以讓人崩潰。可能正是由於它的一些優點導致了它的缺點。我使用感覺最深的就是不能完全的熱部署。先說說我現在的情況。我的一個maven功能有多個module,其中一個是web module,這個是我程序對外的入口。我使用了jetty的maven插件,用於一站式打包運行。

        先說說jetty maven插件的使用。

        普通使用方式:一、maven命令打包 mvn clean install 二、啓動服務器 mvn jetty:run

        eclipse集成 debug啓動方式。具體 參見 http://simile.mit.edu/wiki/How_to_debug_mvn_jetty:run_in_Eclipse

        之前說了,我的工程結構,使用jetty:run的方式肯定不行,這個只能運行web module中target的內容;我現在是使用jetty:run-explored的方式,這樣的話java代碼是可以熱部署的,但jsp之類的文件就不行了,需要人工拷貝過去。無奈,附上我後來寫的bat文件,內容如下:

w:
cd W:/tools/eclipse/workspace_elifes/elifes
call mvn clean install
cd W:/tools/eclipse/workspace_elifes/elifes/elifes-web
set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y
call mvn jetty:run-exploded

這個還存在一個問題,因爲這個都是通過eclipse提供的執行外部工具功能,啓動後的運行日誌內嵌的控制檯(console)並不能感知java類給出超鏈接顯示,這也是不方便調試的一個點。

     如果是用ant + eclipse wtp開發的模式應該就沒這麼痛苦了。

     如果你有好的解決方式,請告知我,萬分感謝!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章