工作小几个月了,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。

Jetty源码学习-编译Jetty源码二三事的更多相关文章

  1. 从源码(编译)安装golang 二

    h1 { margin-top: 0.6cm; margin-bottom: 0.58cm; direction: ltr; color: #000000; line-height: 200%; te ...

  2. elasticsearch5.5.3 源码学习 idea下源码编译

    1.学习elasticsearch 源码,通过搜索“elasticsearch源码”,进行相关搜索.   2.因源码gradle编译,选择gradle-3.5可以编译通过,对应elasticsearc ...

  3. Golang源码学习:调度逻辑(二)main goroutine的创建

    接上一篇继续分析一下runtime.newproc方法. 函数签名 newproc函数的签名为 newproc(siz int32, fn *funcval) siz是传入的参数大小(不是个数):fn ...

  4. 【 js 基础 】【 源码学习 】backbone 源码阅读(一)

    最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...

  5. 【 js 基础 】【 源码学习 】backbone 源码阅读(二)

    最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(source-code-study)进行参考交流,有详细的源码注释,以及知识总结,同时 ...

  6. 【 js 基础 】【 源码学习 】backbone 源码阅读(三)浅谈 REST 和 CRUD

    最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...

  7. go 源码学习之---Tail 源码分析

    已经有两个月没有写博客了,也有好几个月没有看go相关的内容了,由于工作原因最近在做java以及大数据相关的内容,导致最近工作较忙,博客停止了更新,正好想捡起之前go的东西,所以找了一个源码学习 这个也 ...

  8. 【 js 基础 】【 源码学习 】backbone 源码阅读(三)

    最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...

  9. 框架源码系列七:Spring源码学习之BeanDefinition源码学习(BeanDefinition、Annotation 方式配置的BeanDefinition的解析)

    一.BeanDefinition 1. bean定义都定义了什么? 2.BeanDefinition的继承体系  父类: AttributeAccessor: 可以在xml的bean定义里面加上DTD ...

随机推荐

  1. JavaScript中的Boolean 方法与Number方法

    <html> <head> <script type="text/javascript"> //创建 var str = "aaafg ...

  2. iOS边练边学--通知机制和键盘处理

    一.通知中心(NSNotificationCenter) 每一个程序都有一个通知中心实例,专门负责协助不同对象之间的消息通信 任何一个对象都可以想通知中心发布通知(NSNotification),描述 ...

  3. win7配置ftp服务器

    1.安装FTP,打开控制面板,找到程序和功能-->打开或者关闭windows功能,在列表中,展开internet信息服务,勾选FTP服务器,展开WEB管理工具,勾选IIS管理控制台,然后点击确定 ...

  4. 上手并过渡到PHP7(4)——取代fatal error的engine exceptions

    上手并过渡到PHP7 取代fatal error的engine exceptions 泊学原文链接泊学代码秀视频 自从PHP 4以来,PHP的错误处理几乎就是一成不变的.只不过在PHP 5.0里添加了 ...

  5. 06 Locking and Latching

    本章提要---------------------------------------------------------------6,7,8,9,10,11 这 6 章要细看, 从本章开始how ...

  6. [mysql] 随机查询 效率比较

    select primary_count as primaryCount, primary_score as primaryScore, junior_count as juniorCount, ju ...

  7. 如何识别Java中的内存泄漏

    Java开发人员都知道,Java利用垃圾回收机制来自动保持应用程序内存的干净和健康.然而可能有人不知道的是,即使使用了垃圾回收机制,Java中仍然可能存在内存泄漏风险.如果你碰到下面的错误代码: ja ...

  8. linux -- ubuntu 安装apache后,修改默认路径

    默认由apt方式安装的Apache,指定网页主目录位于:/var/www 而系统/var所分到的空间太少,所以要换路径 1.修改默认网站目录 ubuntu8.10下修改apache2的默认文档目录 默 ...

  9. bootstrap+PHP表单验证

    来源:http://www.sucaihuo.com/php/1814.html demo http://www.sucaihuo.com/jquery/18/1814/demo/

  10. PHP大量数据循环时内存耗尽问题的解决方案

    最近在开发一个PHP程序时遇到了下面的错误:PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted错误信息显...分析: ...