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

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

既然代码是写出来的,就不能避免有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. Express极简实例

    假设已创建一个Express工程,否则请参考express工程环境准备 修改app.js var express = require('express'); var app = express(); ...

  2. Android内存优化1 了解java内存分配 1

    开篇废话 今天我们一起来学习JVM的内存分配,主要目的是为我们Android内存优化打下基础. 一直在想以什么样的方式来呈现这个知识点才能让我们易于理解,最终决定使用方法为:图解+源代码分析. 欢迎访 ...

  3. net登录积分(每天登录积分仅仅能加一次) 时间的比較

      public void jifenchange()//积分方法     {         //积分模块//推断如今的日期和任务完毕日志数据库取出来 的日期大小,注意:Compare()方法仅仅会 ...

  4. TCP三次握手连接和TCP四次挥手及大量TIME_WAIT解决方法:

    1.TCP建立连接,三次握手 建立的TCP连接可靠的连接,必须经过三次握手建立连接才能正式通信彼此传输数数据. 客户端请求服务端建立连接 第一次握手:客户给服务发送一个请求报文SYN, 客户端的状态置 ...

  5. [转]Getting started with SSIS - Part 10: Event Handling and Logging

    本文转自:http://beyondrelational.com/modules/12/tutorials/24/tutorials/9686/getting-started-with-ssis-pa ...

  6. Javascript code for soft keyboard

    <style>     BODY {     SCROLLBAR-FACE-COLOR: #f0f0f6; FONT-SIZE: 9pt; BACKGROUND-ATTACHMENT: f ...

  7. Discuz常见小问题2-如何修改整个网站的默认字体为微软雅黑

    界面-风格管理,然后点击默认模板的编辑,在正常字体和小号字体前面加上你要的字体(比如微软雅黑,XXX,XXX),挨个排到后面,如果前面的字体没有则显示后面的 修改之后的效果(注意你不要在页面定义别的C ...

  8. Adobe Acrobat Pro 11安装激活

    运行keygen.exe,点击"generate"一次,生成一个序列号(在安装过程中需要填写序列号). 断网,打开软件,直到出现以下界面,点击蓝色字体"连接Interne ...

  9. Fedora 28 设置yum代理

    编辑  vi /etc/dnf/dnf.conf 文件 添加一行代理设置:proxy=http://****:****

  10. 手机端UC浏览器,在java开发的下载功能中存在的问题?

    在java web开发中,不同浏览器对下载文件的格式有不同的要求,有时会出现视频,音频等文件无法下载的问题.我在开发中,也遇到类似的问题,觉得很苦恼. 经过百度和请教学习,得到2个解决方案. 首先得到 ...