Jetty源码学习-编译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。

时间: 2024-05-01 08:13:13

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

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

最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-study)进行参考交流,有详细的源码注释,以及知识总结,同时 google 一下 backbone 源码,也有很多优秀的文章可以用来学习. 我这里主要记录一些偏设计方向的知识点.这篇文章主要讲 backbone.sync 中用到的 Rest 和 CRUD. 首先我们简单了解一下 REST: REST :

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

最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-study)进行参考交流,有详细的源码注释,以及知识总结,同时 google 一下 backbone 源码,也有很多优秀的文章可以用来学习. 我这里主要记录一些偏设计方向的知识点.具体从以下几个方面入手:1.MVC 框架2.观察者模式 以及 控制反转 一.MVC 框架所谓 MVC 框架,包含三个部分,mod

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

最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-study)进行参考交流,有详细的源码注释,以及知识总结,同时 google 一下 backbone 源码,也有很多优秀的文章可以用来学习. 我这里主要记录一些偏设计方向的知识点.这篇文章主要讲 控制反转. 一.控制反转 上篇文章有说到控制反转,但只是简略的举了个例子,在这里我们详细说一下这个知识点,它其实

如何将源码文件编译成字节码文件

[[email protected] ~]# cat 1.py # 要编译的源码文件 #!/usr/bin/python print 'Hello World' [[email protected] ~]# cat 2.py # 将 1.py 编译成字节代码 #!/usr/bin/python import py_compile py_compile.compile('1.py') [[email protected] ~]# python 2.py [[email protected] ~]#

利用国内镜像源下载、编译Android源码

在国内下载Android可是不太容易,不过从Google断断续续地下载了几天源码后发现清华大学有个TUNA镜像源可以下载Android源码,甚是方便. 参考网站: http://source.android.com/index.html https://aosp.tuna.tsinghua.edu.cn/ 一.环境准备: 现在Android源码的下载和编译在Linux和Mac OS上都可以了,但Mac OS上设置略微复杂点,所以我选择了Ubuntu 14.04 64位的虚拟机.(硬盘建议50G以

Java并发包源码学习之AQS框架(二)CLH lock queue和自旋锁

上一篇文章提到AQS是基于CLH lock queue,那么什么是CLH lock queue,说复杂很复杂说简单也简单, 所谓大道至简: CLH lock queue其实就是一个FIFO的队列,队列中的每个结点(线程)只要等待其前继释放锁就可以了. AbstractQueuedSynchronizer是通过一个内部类Node来实现CLH lock queue的一个变种,但基本原理是类似的. 在介绍Node类之前,我们来介绍下Spin Lock,通常就是用CLH lock queue来实现自旋锁

Google之Chromium浏览器源码学习——base公共通用库(二)

上次提到Chromium浏览器中base公共通用库中的内存分配器allocator,其中用到了三方库tcmalloc.jemalloc:对于这两个内存分配器,个人建议,对于内存,最好是自己维护内存池:此外在windows下使用可使用其自带的内存分配方式:具体的第三方库可以参阅:http://www.360doc.com/content/13/0915/09/8363527_314549128.shtml:目前我们主要的精力尽可能在Chromium浏览器中base公共通用库的主要内容上,所以不再详

Spring源码学习之Aop源码分析

在使用Aop功能时要添加注解@EnableAspectJAutoProxy,所以这个注解就是Aop的入口了.这个注解的作用就是在Spring的后置处理器中添加一个处理器来处理springBean,使之成为一个代理对象. 1 @Target({ElementType.TYPE}) 2 @Retention(RetentionPolicy.RUNTIME) 3 @Documented 4 @Import({AspectJAutoProxyRegistrar.class}) 5 public @int

猫猫学iOS之二维码学习,快速打开相机读取二维码

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 上一篇文章写了怎么生成二维码,这儿就说说怎么读取吧,反正也很简单,iOS封装的太强大了 步骤呢就是这样: 读取二维码需要导入AVFoundation框架#import <AVFoundation/AVFoundation.h> 1:利用摄像头识别二维码中的内容(模拟器不行). 2:输入(摄像头). 3:由会话将摄像头采集到的二维码图像转换成字符串数据. 4:输