从JBoss的服务器中获得源码的细节
第一步,连接到JBoss服务器
我采用的是MyEclipse6,SVN的Eclipse插件,直接解压到MyEclipse的eclipse目录下即可,打开MyEclipse后,即可在window->show view->other中打开svn repository的窗口,在其中new一个svn repository,这个是公共的匿名服务器,每五分钟自动与JBoss服务器同步一次
PS:这个网址可以用浏览器直接访问,就好像上ftp一样,非常方便,也是SVN优于CVS的一方面
第二步,下载相应的JBoss源码
仔细看看JBoss服务器的目录就会发现JBoss源码数量之巨让人乍舌,不过在这里我只下载JBoss,因为当前市面上能买到的中文资料书,最新也就4.x,大部分也是发布到网上的正式版,可以选择一个版本下载,然后运行build/build.bat 文件,自动完成编译构建工作,如果要最新的JBoss源码,这个目录下就是JBoss所有模块的源代码了,你可以选择直接 check out 整个Branch_4_0目录,那样就得到全套JBoss4.0的JBoss源码了,然后运行 build/build.bat 即可,ant会自动完成编译、打包生成二进制代码的工作。(但在我的机子上会构建失败,不知是JBoss源码还是配置的问题)不过我们这里的目的不是获得JBoss 的可执行jar(官方网站可以直接下载release版本),也没有高级到修改JBossJBoss源码的地步,所以我只下载两个核心模块:system和jmx 。其中,system是引导JBoss启动并且载入核心模块的模块,而jmx则是JBoss核心的运行模块(我们都知道JBoss是完全基于JMX实现的)。简单的研究一下而已。
细心观察各个模块可以发现,每个模块下都有一个.project文件,显然每个模块都是一个eclipse的project,所以单纯把全部模块check out到一个项目Branch_4_0是不行的,为什么呢:首先是下回来直接构建会没反应,因为eclipse默认把工程目录下的src作为JBoss源码目录,其他目录中的JBoss源码是不会被编译的,虽然可以手动添加更多的src目录,但那样会累死。更何况,下载和构建那么多源文件也会让你的硬盘崩溃的,我是被那种磁头反复读写的噪声折磨了不止一个小时,连最后删除时系统也卡死在那里,很郁闷
言归正传,我先直接在jmx和system模块上右键“check out”,把它们签出为两个独立的Java project。但是你会不爽地发现两个项目都出现了红叉,提示几类错误:一是找不到一堆库文件,二是ant的构建文件缺这缺那的,烦死,三是 system模块还需要test模块的支持。
下面,以system模块的解决方法为例,其他模块同理可解
首先,我们的目的是让这个项目能够构建通过,从而将来看源代码时可以充分利用IDE的辅助功能,那么上述第二类错误是无关紧要的,因为暂时不需要用ant构建。
然后,第三个错误,我们可以在system项目的build path中发现,需要关联jmx模块和test模块,所以只需再把test模块check out回来即可。不过test模块同样会提示缺少一些库文件。
最后,我们在build path中查看一下那些库文件到底什么来头。可以发现他们都形如 “/thirdparty/apache/log4j”之类的,而SVN上面正好有一个“thirdparty”模块,check out回来看看――里面什么都没有,就一个README,里面写道“/thirdparty 目录的内容是由ant在构建过程中生成的,所以这个目录现在为空”。怎么办呢,难道要自己去找那些jar库文件(也不是不行,因为用到的jar都是比较有名的开源工具包),研究了一下那些ant构建文件,太多太繁琐,自己又对ant不熟,无果而终。有经验的朋友可以下载build模块,看看里面那一堆 build XXX.xml 文件