maven eclipse調試java開源項目

來源:互聯網
上載者:User

一直以來,都想要閱讀某些Java開源項目的原始碼,甚至想要修改某些代碼,實現對開源項目進行二次開發的目的。但總是不知從何入手,直接將開源項目的原始碼匯入Eclipse,總是會報很多錯誤,而無法編譯。可以直接通過Eclipse開啟開源項目的原始碼,至少能夠達到可視化源碼閱讀、源碼導航的目的,還是能在一定程度上解決源碼閱讀不爽的問題,因為直接開啟並沒有改變源檔案項目的目錄結果,對於修改過後的代碼,可以通過命令列找到源檔案項目目錄,並使用mvn或者ant對項目進行編譯,再查看修改後的項目是否正確。


由於當前Java開源項目幾乎都是採用maven或者ant的方式打包的,所以上述方法再一定程度上解決了閱讀源碼的問題,至少通過Eclipse能夠實現源碼之間的導航,但是想要通過Eclipse進行編譯原始碼,甚至調試就無法辦到了。


這麼強大的Eclipse,怎麼用起來這麼力不從心呢,罪魁禍首還是自己太孤陋寡聞了,這麼強大的maven,Eclipse怎麼會沒有外掛程式支援呢,有了maven外掛程式,Eclipse匯入maven項目(也就是大多數開源項目的目錄結構),在Eclipse上面就能夠直接進行編輯,甚至通過Eclipse去編譯、調試源項目。


既然知道了怎樣閱讀開源項目的原始碼,接下來就是安裝Eclipse的maven外掛程式,然後原始碼、二次開發...


前面說了這麼多廢話,是否真的有效呢,下面以Axis2原始碼為例,做一個小實驗例子,修改services/listServices請求的處理源碼,使得原先僅支援WSDL方式描述的Web服務現在也支援OWL4WS的Web服務描述。


第一步:安裝maven

安裝maven實在是簡單,從 http://maven.apache.org/download.html 下載最新的maven版本,然後解壓,配置MAVEN_HOME和MAVEN_OPTS以及path環境變數即可。MAVEN_HOME指向maven的跟目錄,MAVEN_OPTS配置maven執行時的參數,由於MAVEN預設設定的記憶體比較少,編譯大項目時可能會出現OutofMemory的情況,如我沒有設定MAVEN_OPTS而編譯Axis2的源碼時就出現了OutofMemory的情況,最後配置path,指向%MAVEN_OPTS%\bin即可。使得在命令列介面中能夠直接使用maven命令。更多關於maven的介紹,推薦一本書給大家:《Maven實戰》,也有叫《Maven in action》,是一個中國人寫的,淺顯易懂。


第二步:安裝Eclipse的maven外掛程式

Help->Install New Software->Add,添加如下內容:

m2e - http://download.eclipse.org/technology/m2e/releases 如 http://www.eclipse.org/m2e/download/ 所示,上述外掛程式的路徑應該為m2e的最新版本,使用之前的版本可能會出現依賴其他外掛程式的情況,導致m2e外掛程式安裝不上,SB的Eclipse也沒有提示m2e到底依賴哪些外掛程式導致其安裝不上,度娘倒是能夠提供一下協助,但是幾乎不能找到一個能夠使用的。

安裝完m2e外掛程式之後,就能通過Eclipse開啟maven格式的項目,並能夠藉助Eclipse對maven格式的源項目進行編譯,當然也可以直接通過Eclipse建立一個Maven項目,從而使用maven的方式管理你的項目。maven實在是強大,如果你使用Java語言寫程式,瞭解maven真心是有必要。安裝完後再建立項目或者匯入項目時,就可以選擇Maven進行了。安裝完外掛程式後會看到如下效果:



第三步:在Eclipse中修改原始碼

通過Eclipse匯入maven項目,就能使用Eclipse的可視化導航功能對源碼進行閱讀及修改,還能直接執行相關的mvn命令,匯入後的程式如下圖所示:



第四步:通過mvn package編譯並打包源碼,得到發行版本,進行測試

有了maven,原始碼的編譯及打包就變得容易多了,可以直接通過Eclipse進行,選擇項目右鍵Run As或者按右鍵項目的pom.xml檔案Run As即可。如下圖所示:



當然,也可以直接通過命令列進行打包編譯,我選擇採用命令列進行,由於我只修改了Axis2源碼中的兩個模組,這兩個模組分別是axis2-transport-http和axis2-webapp。對這兩個模組的命令列編輯命令如下:

[plain]  view plain copy print ? C:\OpenSource\axis2-1.6.0-src\axis2-1.6.0\modules\transport\http>mvn clean install   [INFO] BUILD SUCCESS      C:\OpenSource\axis2-1.6.0-src\axis2-1.6.0\modules\webapp>mvn clean package   [INFO] Building war: C:\OpenSource\axis2-1.6.0-src\axis2-1.6.0\modules\webapp\target\axis2.war   [INFO] BUILD SUCCESS  

mvn install是將axis2-transport-http模組安裝到maven本地倉庫中,而mvn package是將來源程式按指定的格式打包,由於webapp模組的pom.xml檔案中指定了很多相依模組,包括其他項目的或者axis2本身的模組,如transport-http模組,打包時會從本地倉庫中自動擷取其依賴的模組,並打包。如果本地倉庫中沒有相應的模組,會去網上自動下載,這也是為什麼第一次編譯開源項目時會花費很長時間的原因。


將axis2.war包拷貝到tomcat的webapp目錄下,啟動tomcat,在瀏覽器中輸入http://localhost:8080/axis2/services/listServices,即可看到修改後的頁面已經對OWL4WS進行了支援。如下圖所示:



回過頭來,發現本篇文章儘是廢話,不過就是想表達一下,maven真心是灰常強大,對於想要閱讀Java開源項目原始碼,或者有在這些原始碼的基礎上進行二次開發衝動的童鞋,一定不要錯過maven的學習,不過感覺這種方式在修改原始碼,然後進行測試這種方式還是非常不方便,命令列編譯,還得copy到tomcat下測試回合,哪位有更好的閱讀原始碼並進行二次開發的方式,請你一定要告訴我啊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.