storm 源码下载到本地有一段时间了,今天事情不多就将源码编译了一遍。期间也参考了一些网上的文章,很多都转来转去,或多或少存在一些问题,或者没有将问题讲透彻,在此把自己遇到的问题和解决的经验记录下来,希望能帮到需要的朋友。
感谢
- Clojure Clojure 提供了 http://clojars.org/repo/ 的国内镜像,造福了国内广大的 Clojure 的学习者。另外论坛气氛很活跃,很值对 Clojure 感兴趣的同学加入。
- github,开源的圣地,知识的宝库,你值得拥有。
准备工作
- storm-1.1.0 源码
- maven 3.3.1
- JDK 1.8.0_91
过程中遇到的问题
clojars 库不能访问
http://clojars.org/repo/ 这个库不能访问,导致很多依赖的包不能下载,幸好找到了 Clojure China 发布的镜像。将镜像内容添加到 maven 的 setting.xml 中。
<!-- 修改镜像地址 -->
172 <mirror>
173 <id>clojars</id>
174 <mirrorOf>clojars</mirrorOf>
175 <url>http://clojars.org/repo/</url>
176 </mirror>
177 -->
178 <mirror>
179 <id>clojars-daocloud</id>
180 <mirrorOf>clojars</mirrorOf>
181 <url>http://lbp0200-maven.daoapp.io/repo/</url>
182 </mirror>
hyperic-sigar-1.6.4.zip 不能下载
编译 storm-metrics 的时候会用到 hyperic-sigar-1.6.4.zip,由于 pom.xml 中使用 google code 的源,导致不能下载。因此需要修改pom.xml 配置内容,我使用 sigar-1.6.4.zip 在 github 发布版作为替代。pom.xml 文件有两处需要修改。
<!-- 修改 sigar 下载地址 -->
<properties>
<!-- settings for downloading the sigar native binary complete archive, which is not available in Maven central-->
<sigar.version>1.6.4</sigar.version>
<sigar.download.url>https://github.com/hyperic/sigar/archive/sigar-${sigar.version}.zip</sigar.download.url>
<!-- sigar.download.url>https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/magelan/hyperic-sigar-${sigar.version}.zip</sigar.download.url -->
<sigar.SHA1>8f79d4039ca3ec6c88039d5897a80a268213e6b7</sigar.SHA1>
<!-- this will download the sigar ZIP to the local maven repository next to the sigar dependencies,
so we only download it once -->
<sigar.download.path>${settings.localRepository}/org/fusesource/sigar/${sigar.version}</sigar.download.path>
</properties>
<!-- ①取消下载文件的 sha1 验证;②修改解压路径 -->
<tasks>
<echo message="Downloading sigar native binaries..." />
<get src="${sigar.download.url}" dest="${sigar.download.path}/" skipExisting="true" />
<!-- checksum file="${sigar.download.path}/sigar-${sigar.version}.zip" algorithm="SHA1" property="${sigar.SHA1}" verifyProperty="validChecksum" />
<fail message="Checksum validation failed for hyperic-sigar-${sigar.version}.zip">
<condition>
<isfalse value="${validChecksum}" />
</condition>
</fail -->
<unzip src="${sigar.download.path}/sigar-${sigar.version}.zip" dest="${project.build.directory}/classes/resources">
<patternset>
<include name="**/lib/libsigar-*" />
<include name="**/lib/sigar-*" />
</patternset>
<mapper type="flatten" />
</unzip>
</tasks>
到此,所有问题都已解决,在 storm 源码下执行:
mvn clean install -DskipTests
直到最后出现:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Storm ............................................. SUCCESS [1.890s]
......
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3:14.334s
[INFO] Finished at: Sun Jul 09 19:17:21 CST 2017
[INFO] Final Memory: 262M/791M
[INFO] ------------------------------------------------------------------------
到此, storm 编译完成。接下来就是编写自己的 topology 了。
最后
纸上得来终觉浅,绝知此事要躬行。
学无止境,特别是计算机技术。不要觉得自己能记住或者已经学会,时过境迁,上手一试便知真假。这也是我现在做完便记下的原因。