storm 源码下载到本地有一段时间了,今天事情不多就将源码编译了一遍。期间也参考了一些网上的文章,很多都转来转去,或多或少存在一些问题,或者没有将问题讲透彻,在此把自己遇到的问题和解决的经验记录下来,希望能帮到需要的朋友。
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>编译 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 了。
学无止境,特别是计算机技术。不要觉得自己能记住或者已经学会,时过境迁,上手一试便知真假。这也是我现在做完便记下的原因。