工作小幾個月了,JDK基礎和web應用框架學的的差不多了,開始學習Jetty源碼,費了小半天才編譯成功,把自己拆過的坑記錄下來。
編譯前的環境:
MAVEN 3.3、Eclips eLuna Service Release 1 (4.4.1)
下載好MAVEN後,得把Eclipse中的maven配置為下載的MAVEN具體請搜索其他博文參考!
1.下載源碼
1.1 Jetty源碼可以方便的在Github的Jetty工程主頁上下載,鏈接。
1.2 進入主頁後,看了的頁面類似如下:
1.3 點擊Jetty工程主頁圖片的1處可以出現下拉彈出菜單,你可以按branch或者tag選擇不同版本的Jetty,本文使用的是Jetty 9.3.x,也就是快照版。
1.4 點擊Jetty工程主頁圖片的2處,顯示下載源碼包的方式,如果你沒有git客戶端或者不想安裝,點擊下載zip包的連接進行直接下載。
2. 導入eclipse
2.1 下載zip包成功後,進行解壓,jetty包的根目錄下文件一覽如下。在此,為後面敘述方便,稱該目錄為$myJettySourceRoot。
該目錄(後續稱為$myJettySourceRoot)中紅框圈中的兩個文件值得注意:
README.md是開發者團隊為編譯源碼的開發者提供的一些提示的內容,但是別當真!完全按他的做是編譯不會成功的!!!
porm.xml是Jetty工程的根porm文件。
2.2 打開Eclipse,選擇File->import->Maven->Exesting Maven Projects。選擇$myJettySourceRoot目錄,我的是C:\Users\Administrator\Downloads\jetty.project-jetty-9.3.x,如下圖,選擇所有工程。點擊“完成”開始導入,然後Maven會開始
下載依賴包,工程可能需要持續3個小時。中途出現的選項一律點“確認”和“resolve later”,可能會出現重啟Eclipse的選項,也點“確認”。
3. 編譯源碼
3.1導入成功後,Eclipse中目錄樹如下,找到Jetty-Protject工程鼠標右鍵,選擇run as->Maven clean,進行工程清理。
3.2 清理完成後,在選擇etty-Protject工程鼠標右鍵,選擇run as->run configuration。在Maven Bulid下新建一個build配置。按下圖配置:進行install、但跳過test。(因為有一些測試在本機上難以成功)。點擊“run”開始編譯,中途會出現失敗的場景,處理步驟參考3.3,重復幾遍後可編譯成功。
3.3 編譯失敗的的處理參考。
在編譯中,經常會出現編譯失敗,查看控制台信息會發現"Could not resolve dependencies for
xxx:jar:test"的類似信息,出現這種情況是jetty-project某個子模塊依賴了另一個子模塊的test包,出現這種情況,先在Eclipse中找到對應xxx的Maven工程,右鍵run as ->maven install。比如xxx是jetty-plus,就右鍵jetty-plus工程,run as ->maven install,先按照這個子模塊的所有包,然後再執行3.2,重復幾次就可以編譯成功。完全編譯成功如下圖:
3.4 在$myJettySourceRoot\jetty-distribution\target\distribution目錄(我的目錄是C:\Users\Administrator\Downloads\jetty.project-jetty-9.3.x\jetty-distribution\target\distribution)下可以查到編譯成功後的發現文件。
3.5 打開cmd,cd到該目錄下,輸入java -jar start.jar可以啟動Jetty。