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

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

既然代码是写出来的,就不能避免有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. 第七章Openwrt安装服务器环境php+uhttpd+mysql

    在前面的文章中刷openwrt.配置网络环境.挂载u盘都配置成功了之后,下面的操作就变得简单起来!!!! 1. putty连接到路由器 2. 安装php opkg install php5-fastc ...

  2. 用python生成基于lombok 和 hibernate 生成javabean

    mysql工具类 import pymysql.cursors import sys from contextlib import contextmanager import traceback im ...

  3. jquery一键控制checkbox全选,反选,全不选。

    jquery attr()方法获取标签的 checked 会有问题,所以用了 prop() 方法. Hml的checkbox没有加name,只用了 div 嵌套. 如有更好的方法,望指点!! //全选 ...

  4. ylbtech-LanguageSamples-Nullable(可以为 null 的类型)

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Nullable(可以为 null 的类型) 1.A,示例(Sample) 返回顶部 “ ...

  5. iOS: 工具栏控件UIToolBar和工具栏按钮控件UIBarButtonItem的使用

    一.工具栏控件:UIToolBar:UIView 介绍: ToolBar工具栏是视图View的属性,可以在工具栏上添加工具栏按钮Bar Button Item(可以是自定义的Custom.也可以是系统 ...

  6. Linux自定义应用程序及其菜单图标

    在Linux桌面系统中,如果需要自己添加一个应用程序,如果是标准的bin, lib, share结构,我通常将其放在/usr/local/bin中.如果非这样,或者程序文件很多,易造成Linux系统目 ...

  7. JS夯实基础:Javascript 变态题解析 (下)

    function sidEffecting(ary) { ary[] = ary[]; } function bar(a,b,c) { c = sidEffecting(arguments); ret ...

  8. 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和"普通变量"之完全解读

      2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于:   分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X ...

  9. decorator在Python中的作用

    decorator(装饰器)在python中作用,可以起到代码复用,也可以起到AOP(面向横切面)的作用. 另外很重要的一点应该就是function在python的世界中是作为一等公民存在的. 在py ...

  10. 转: codereview工具之 review board 选型与实践

    转:ReviewBoard代码评审实践总结 http://my.oschina.net/donhui/blog/350074 svn与review board 结合实践 http://my.oschi ...