Jetty源码学习-编译Jetty源码二三事
工作小几个月了,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。

Jetty源码学习-编译Jetty源码二三事的更多相关文章
- 从源码(编译)安装golang 二
h1 { margin-top: 0.6cm; margin-bottom: 0.58cm; direction: ltr; color: #000000; line-height: 200%; te ...
- elasticsearch5.5.3 源码学习 idea下源码编译
1.学习elasticsearch 源码,通过搜索“elasticsearch源码”,进行相关搜索. 2.因源码gradle编译,选择gradle-3.5可以编译通过,对应elasticsearc ...
- Golang源码学习:调度逻辑(二)main goroutine的创建
接上一篇继续分析一下runtime.newproc方法. 函数签名 newproc函数的签名为 newproc(siz int32, fn *funcval) siz是传入的参数大小(不是个数):fn ...
- 【 js 基础 】【 源码学习 】backbone 源码阅读(一)
最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...
- 【 js 基础 】【 源码学习 】backbone 源码阅读(二)
最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(source-code-study)进行参考交流,有详细的源码注释,以及知识总结,同时 ...
- 【 js 基础 】【 源码学习 】backbone 源码阅读(三)浅谈 REST 和 CRUD
最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...
- go 源码学习之---Tail 源码分析
已经有两个月没有写博客了,也有好几个月没有看go相关的内容了,由于工作原因最近在做java以及大数据相关的内容,导致最近工作较忙,博客停止了更新,正好想捡起之前go的东西,所以找了一个源码学习 这个也 ...
- 【 js 基础 】【 源码学习 】backbone 源码阅读(三)
最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...
- 框架源码系列七:Spring源码学习之BeanDefinition源码学习(BeanDefinition、Annotation 方式配置的BeanDefinition的解析)
一.BeanDefinition 1. bean定义都定义了什么? 2.BeanDefinition的继承体系 父类: AttributeAccessor: 可以在xml的bean定义里面加上DTD ...
随机推荐
- 删除TP数据库缓存
删除 /Runtime/Data/_fields/ 缓存表文件
- _STORAGE_WRITE_ERROR_
:( _STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/User/788524be80db1959c132efbce25367a0.php 错误位置 ...
- 检查 Linux 服务器性能
如何用十条命令在一分钟内检查 Linux 服务器性能 如果你的Linux服务器突然负载暴增,报警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文 ...
- seo 基础
标题用<h2>标题</h2> iamge 中加上 alt=“” 的属性 这样有利用百度的搜索引擎爬虫搜索到
- 使用Backbone构建精美应用的7条建议
我们在Bizzabo使用Backbone.js已经有两年的时间了.我们从一个小的网页应用为开始,这些小应用是由Backbone驱动的,而且他们看上去非常友好. Backbone天生就不固执己见.你从文 ...
- Linux Linux常用命令三
在Vim中可以直接查看文件编码 :set fileencoding 即可显示文件编码格式. touch 创建文件或修改文件时间 touch [options] file-list 参数 file-li ...
- php 不依赖数据实现删除图片,核心代码
<?php $file = "ueditor\php\upload\image\*\*.png"; foreach (glob("$file") as $ ...
- 关于Cocos2d-x中坐标系的种类和转换
注意: 当一个节点有一个子节点的时候,如果移动父节点,子节点也会跟着做相应的移动变化,只要被添加到父节点中,子节点就被绑定了,所以子节点的位置,坐标就会被动地变化. 当一个节点有一个子节点的时候,如果 ...
- Spring4 Web开发新特性
基于Servlet3开发. 针对RESTful开发,提供了@RestController,加在Controller上面,免除了每个@RequestMapping method上面的@ResponseB ...
- Graphviz 对网状结构进行可视化
Graphviz 是一款开源的,免费的图结构的可视化软件,只需要描述清楚图中的顶点,边的信息,Graphviz 可以自动化的对图进行布局,生成对应的图片: Graphviz 采用DOT 的这种语言来描 ...