Jetty源碼學習-編譯Jetty源碼二三事

来源:http://www.cnblogs.com/grass-cao/archive/2016/12/10/6155102.html
-Advertisement-
Play Games

開始學習Jetty源碼,費了小半天才編譯成功,把自己拆過的坑記錄下來。 ...


工作小幾個月了,JDK基礎和web應用框架學的的差不多了,開始學習Jetty源碼,費了小半天才編譯成功,把自己拆過的坑記錄下來。

編譯前的環境:

MAVEN 3.3、Eclips eLuna Service Release 1 (4.4.1) 

下載好MAVEN後,得把Eclipse中的maven配置為下載的MAVEN具體請搜索其他博文參考!

  1. 下載源碼
  2. 導入eclipse
  3. 編譯源碼

 

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。

 

首發於博客園,原文轉載請註明出於grass_草

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡使用了 python 的基本代碼實現了 Linux 系統下 wc 命令程式的基本功能。 ...
  • Maven的一個核心的作用就是管理項目的依賴,引入我們所需的各種jar包等。為了能自動化的解析任何一個Java構件,Maven必須將這些Jar包或者其他資源進行唯一標識,這是管理項目的依賴的基礎,也就是我們要說的坐標。包括我們自己開發的項目,也是要通過坐標進行唯一標識的,這樣才能才其它項目中進行依賴 ...
  • MCSDK簡介 BIOS MCSDK是為TI的高性能多核DSP提供的一套組件,包括: SYS/BIOS實時操作系統 Chip support libraries, drivers, and basic platform utilities Run-time libraries (OpenMP, Op ...
  • 線程的記憶體結構圖 一、主記憶體與工作記憶體 1.Java記憶體模型的主要目標是定義程式中各個變數的訪問規則。此處的變數與Java編程時所說的變數不一樣,指包括了實例欄位、靜態欄位和構成數組對象的元素,但是不包括局部變數與方法參數,因為它們是線程私有的,不會被共用。 2.Java記憶體模型中規定了所有的變數都 ...
  • Python爬蟲實戰 抓取圖書館借閱信息 原創作品,引用請表明出處:Python爬蟲實戰 抓取圖書館借閱信息 前段時間在圖書館借了很多書,借得多了就容易忘記每本書的應還日期,老是擔心自己會違約,影響日後借書,而自己又懶得總是登錄到學校圖書館借閱系統查看,於是就打算寫一個爬蟲來抓取自己的借閱信息,把每 ...
  • 官網 http://www.overbyte.be/ 下載 OverbyteIcsV816 完成後解壓到E:\Delphi7\OverbyteIcsV816\ 1、在library裡加入E:\Delphi7\OverbyteIcsV816\Source目錄。 2、從File->Open中打開E:\D ...
  • 1、基礎知識 最早的基礎知識僅限於那麼一點點的html和css,比牛毛還牛毛的一點點。所以最開始是從immoc上看視頻和跟著練習,花了有一個多月,看完一個路徑從:零開始學習ThinkPHP框架,由於基本沒有基礎,所以一開始有的地方很吃力,後來就先試著用不求甚解的方法去看,以後根據需要再慢慢來補,這樣 ...
  • 在SQL語句中有一些寫的是這樣的: 其中的“xx_id = %d”,這裡的%d指的是要取一個十進位的數(d的意思就是decimal十進位的意思),十進位數的內容就是後面的$bl['student_id']這個。 ps:每天收穫一點點! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...