此编译打包一直失败,中间陆陆续续尝试了好几天,最终才成功,个人尝试的是Ambari 2.5.2现阶段的最新版本。
中间踩过的N多坑没详细记录,想编译成功,记住如下几个要点:
1、单独进入每个模块目录进行编译(mvn install),都通过了,最后汇总编译ambari;(降低编译时间)
2、Ambari版本号要设定为5位数,如我的是2.5.2.0.0(四位数会因正则表达式检测不匹配报错)
mvn versions:set -DnewVersion=2.5.2.0.0 #版本号必须设为5位
pushd ambari-metrics
mvn versions:set -DnewVersion=2.5.2.0.0
popd
3、修改Apache Maven的下载源,个人用的阿里云的maven源(添加了多个),淘宝的npm源;(加快下载成功率和速度);
4、编译不要老加clean,如果要执行mvn删除,可先对ambari-web/node_modules备份,执行mvn clean删除后再将备份的node_modules拷入项目,重新执行mvn install(节省时间)
5、遇到编译错误(大部分是网络下载失败),有的可手动下载对应的jar包放入对应的repository仓库,
一直提示缺少jar包出错,手动网上下载jar包,因为个人不清楚jar放入在仓库中的位置,个人采取如下命令,将jar包导入到maven的位置:
# mvn install:install-file -Dfile=/home/slide-webdavlib-2.1.jar(文件路径名)
# find ~/.m2/repository/ -name '*webdavlib*'
再将slide-webdavlib-2.1.jar拷贝到查询的目录下。
maven仓库中的某个构件如果因为网络或者其他的原因,没有下载成功或者下载被中断,将会出现一个LastUpdated的文件,这个时候,就算网络好了,也不能正常使用这个构件。可以切换到仓库的目录下执行:
find ~/.m2/repository/ -name "*.lastUpdated" -exec rm -rf {} \;
6、有的可修改pom.xml再进行编译(个人通过设置本地仓库下载,提高效率)
如下面ambari/ambari-metrics目录下的pom.xml文件:
7、有的编译一直报错,解决不了,有可能考虑版本不匹配的问题(个人全都下载目前最新的版本,同样编译过了,但多次采坑);
8、有的编译报错,重新执行编译命令错误消失了,所以至少2次出现同样的错误就说明此处存在问题;
9、编译中断,重新执行编译命令,后面加上 -rf : ambari+(报错的服务)就会从没有成功的服务开始编译,前面的不会重新编译;
10、安装python环境,推荐用的是python2.6,如果用python2.7,要设置/usr/bin/python2.6文件软连接到python2.7编译环境,还要安装对应的setuptools(编译时找不到python2.6文件报过错);
最后,此编译一定要有耐心,运气不好做好持久战的准备;
个人通过如下环境编译打包成功(Ambari 2.5.2版本):
CentOS7.2
Python 2.7.5(建议安装Python2.6,/usr/bin/python2.6)
nodeJS v8.4.0
Brunch 5.3.0(npm -v)
Apache Maven 3.5.0
jdk 1.8+
git
wget
gcc-c++
rpm-build-4.11.3
附编译成功后的截图(因2.5.2的ambari-web界面发生了变更,还是用老版本2.5.0进行编译,其结果如下):