众多开源项目。我们一般都是直接拿过来用之而后快。

只是我们也应该知道这些项目是怎样从源代码构建而来的。

既然代码是写出来的,就不能避免有BUG存在,话说没有完美的软件,也没有无漏洞的程序。

事实上从源代码构建。步骤不多,总的来说是件非常easy的事情。了解了这样一个过程,以后须要改动源代码或者在源代码之上进行二次开发也知道怎么把源代码构建成可运行程序,本文以ActiveMQ为例,简单概括一下怎样从源代码构建可应用程序。旨在抛砖引玉,为须要的同学们指个路。

由于近期项目中须要AMQ。所以又把AMQ翻出来用了,中间遇到点瓶颈问题,所以须要改动AMQ的源代码来解决。

AMQ分为持久化和非持久化。AMQ的持久化如今默认的为kahadb,也能够配置使用数据库来持久化。还有LevelDB。这是它眼下已经提供的几个能够直接配置的持久化方式。假设对AMQ进行过測试的同学应该都知道。AMQ假设配置了持久化,生产者的速度非常低。可是实际业务开发中。非常多时候我们又要保证数据不能丢失。所以我们必须要进行持久化操作。为了解决这个瓶颈问题。我们能够备採用第三方缓存或其它吞吐量高的持久化方式,所以我们通过改动AMQ的源代码来添加这些支持。大家有想法或好的方案。最好还是留言探讨。

事实上假设有的同学还在做MQ选型,就直接选择RabbitMQ吧,这个综合方面都要比AMQ要好。AMQ仅仅能说是老牌子,还是非常吃香的。比較非常多系统的需求AMQ足以应付。

假设对TPS要求非常高。最好还是可虑下Apache的MQ新宠“Kafha”。假设不要求消息的持久化,ZeroMQ也是不错的选择,它的吞吐量就像一头猛兽,仅仅是它不支持持久化。

AMQ是Java语言开发,本文以AMQ从源代码构建做个简单步骤说明:

1、下载源代码

大家能够从官网下载AMQ相应版本号的源代码,这里给一个地址:http://apache.fayea.com/activemq/

下载源代码文件 activemq-parent-5.13.0-source-release.zip 之后,解压到本地磁盘。我把它放在H盘的amq文件夹下。

2、打开CMD通过命令行的方式构建

cd H:\amq\activemq-parent-5.13.0

mvn -Dtest=false -DfailIfNoTests=false clean install

我在运行的时候,出现了一些jar包无法从maven仓库下载的错误,所以手动下载jar包(这个站点能够下载到非常多jar:http://www.java2s.com/Code/Jar/http://maven.outofmemory.cn/

aether-util-0.9.0.M2.jar

xz-1.2.jar

plexus-archiver-2.4.4.jar

我下载缺少的jar包后。手工安装到到本地maven仓库,命令例如以下:

mvn install:install-file -DgroupId=org.eclipse.aether -DartifactId=aether-util -Dversion=0.9.0.M2 -Dpackaging=jar -Dfile=aether-util-0.9.0.M2.jar

mvn install:install-file -DgroupId=org.tukaani -DartifactId=xz -Dversion=1.2 -Dpackaging=jar -Dfile=xz-1.2.jar

mvn install:install-file -DgroupId=org.codehaus.plexus -DartifactId=plexus-archiver -Dversion=2.4.4 -Dpackaging=jar -Dfile=plexus-archiver-2.4.4.jar

mvn install:install-file -DgroupId=org.codehaus.plexus -DartifactId=plexus-io -Dversion=2.0.10 -Dpackaging=jar -Dfile=plexus-io-2.0.10.jar

mvn install:install-file -DgroupId=groovy -DartifactId=groovy-all-1.0-jsr -Dversion=03 -Dpackaging=jar -Dfile=groovy-all-1.0-jsr-03.jar

大家依据实际报错的jar包按这样操作安装到本地仓库就可以。

我的网络不行,老是出现下载中断的情况,为此我倒腾好久。

总之。假设是网络问题就重复运行 mvn -Dtest=false -DfailIfNoTests=false clean instal 重试。假设是实在下载不下来jar包,就自己寻找后手工安装。

如此重复,直到出现 BUILD SUCCESS 为止,例如以下:

………………
………………
[INFO] ActiveMQ :: Tooling ............................... SUCCESS [0.061s]
[INFO] ActiveMQ :: Memory Usage Test Plugin .............. SUCCESS [3.111s]
[INFO] ActiveMQ :: Performance Test Plugin ............... SUCCESS [5.169s]
[INFO] ActiveMQ :: StartUp/Stop Plugin ................... SUCCESS [4.619s]
[INFO] ActiveMQ :: Web ................................... SUCCESS [1.961s]
[INFO] ActiveMQ :: OSGi bundle ........................... SUCCESS [20.011s]
[INFO] ActiveMQ :: Blueprint ............................. SUCCESS [0.634s]
[INFO] ActiveMQ :: Web Demo .............................. SUCCESS [12.950s]
[INFO] ActiveMQ :: Web Console ........................... SUCCESS [10.347s]
[INFO] ActiveMQ :: Karaf Integration Tests ............... SUCCESS [3.049s]
[INFO] ActiveMQ :: Integration Test :: Spring 3.1 ........ SUCCESS [0.627s]
[INFO] ActiveMQ :: Assembly .............................. SUCCESS [38.243s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7:22.460s
[INFO] Finished at: Thu Dec 24 01:35:48 CST 2015
[INFO] Final Memory: 176M/711M
[INFO] ------------------------------------------------------------------------
H:\amq\activemq-parent-5.13.0>

构建完毕后,进入assembly/target 文件夹,当中的两个压缩文件就各自是Linux 和Windows文件,解压就可以。(Linux是tar结尾文件,Win是zip结尾文件)

通过eclipse构建eclipseproject文件

命令:mvn eclipse:eclipse

然后就能够从eclipse导入project了,代码改动后,再使用上面的构建命令构建就可以。

以下是导入后的project:

ActiveMQ从源代码构建的更多相关文章

  1. 从源代码构建 Go 开发环境

    从源代码构建 Go 开发环境 Go 1.5 之前的版本 安装C 语言开发环境 在Go 1.5 之前的版本(比如 1.3.1.4),都会部分的依赖 C 语言的工具链,所以如果你有C 语言的开发环境,就可 ...

  2. 亲自己主动手从源代码 构建 Groovy 2.3.8 公布包

    今天为了学习 怎样使用 Groovy 写 Groovy 的測试代码, 所以到 http://groovy.codehaus.org/Download 下载了 Groovy 2.3.8 的源码包. Gr ...

  3. ActiveMQ的安全机制使用及其源代码分析 [转]

    ActiveMQ是目前较为流行的一款开源消息服务器.最近在项目开发中,需要为ActiveMQ开发基于IP的验证和授权机制,因此,对ActiveMQ的安全机制进行了了解,以下将介绍ActiveMQ的安全 ...

  4. Ogre场景编辑器Ogitor源代码的构建

    本文转自:http://blog.csdn.net/zhengkangchen/article/details/6000769 Ogitor-0.4.2源代码构建,不少时间,这里记录一下: 下载源代码 ...

  5. 基于源代码为树莓派设备构建 TensorFlow

    本指南为运行 Raspbian 9.0 操作系统的 Raspberry Pi 嵌入式设备构建 TensorFlow.虽然这些说明可能也适用于其他系列的 Raspberry Pi 设备,但它仅针对此文中 ...

  6. 从头开始构建LINUX [LFS]

    “LINUX就是这个范”有一章专门介绍了Linux的构建,过程详细,很有意思.结合这方面的资料简要汇集一下 LFS 这个站点提供了从源代码构建一个Linux的详细步骤 书 http://archive ...

  7. 构建 XCache 的基本步骤

    构建 XCache 的基本步骤 在开始之前,首先确保 PHP 正常安装并核实 phpize 是否位于 shell 的 PATH 下.同时,还需要一个 C 编译器,例如 GNU Compiler Col ...

  8. maven项目构建

    Maven是apache的一个开源项目.是一个用来把源代码构建成可发布的构件的工具. Maven的功能非常强大,可以认为是一个项目管理工具,不仅仅是一个构建工具. Maven本身的核心很小,但是可以在 ...

  9. alfs学习笔记-自动化构建lfs系统

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一名linux爱好者,记录构建Linux From Scratch的过程 经博客园-骏马金龙前辈介绍,开始接触学习lfs,用博客 ...

随机推荐

  1. NSIS安装包制作

    6)闪屏界面,可以在源代码中加入下列代码即可: A.普通效果 以下是代码片段: Function .onInit SetOutPath $TEMP File /oname=spltmp.bmp &qu ...

  2. Unity3D 避免玩家作弊

    如果你的Unity项目快上线了,我强烈建议你看一下Anti-Cheat这个插件.因为IOS和Android分别越狱和Root后玩家可以使用 @八门神器 @烧饼修改器 等一些列作弊的软件来修改游戏内存, ...

  3. response letter模板

    Dear Dr. or Prof. XXXX (family name of the Editor or Editor-in-Chief who issued the decision letter) ...

  4. You must have a TTY to run sudo

    1.方法一,给命令行添加tty ssh -t user@foo.com 2.使用sudo visudo修改配置: Defaults:user !requiretty 表示用户user使用sudo命令时 ...

  5. IP地址网段规划

  6. SQL通过身份证获取信息

    SELECT t.identity_number '身份证号',SUBSTR(t.identity_number,1,2) AS "省份",SUBSTR(t.identity_nu ...

  7. Spark Streaming no receivers彻底思考

    数据接入Spark Streaming的二种方式:Receiver和no receivers方式 建议企业级采用no receivers方式开发Spark Streaming应用程序,好处: 1.更优 ...

  8. 【笔记】git 的常用操作命令(持续更新。。。)

    项目正在如火如荼的开展,代码量的繁多不得不令我们运用 git 这个有用的工具去管理我们共同协作的代码 git 在这里不作什么介绍了,百度一大堆的教程 首推廖雪峰老师的:http://www.liaox ...

  9. Android,TextView的所有属性和方法

    XML 属性 属性名称 相关方法 描述 android:autoLink setAutoLinkMask(int) 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接. ...

  10. javascript闭包传参就这么简单

    var query = (function (a) { return a; })('fx'); alert(query);