一、写在前面
1、需求提出
- 当前环境Kylin版本为2.6,现在需要兼容CDH平台的大数据组件,从Kylin官网下载页面查看到的Kylin-2.6官方匹配CDH版本为5.7和6.0,与要兼容的CDH版本不一致,为避免之后由于版本差异带来的兼容性问题,对Kylin-2.6进行指定CDH版本编译。
2、存在问题
- 由于Kylin-2.x部分版本相对久远,在Mac环境编译可能存在相关依赖的前端组件版本兼容性问题,现将全流程和趟坑经验分享如下。
二、前置准备
1、编译环境
- macOS Catalina 10.15.5
- JDK 8
- Maven 3.6.3
2、前端环境
- nodejs
- bower
- phantomjs
3、修改pom.xml文件
- <1>. 添加阿里云仓库,提高依赖下载速度
-
<repository> <id>nexus-aliyun</id> <name>nexus-aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </repository>
-
- <2>. 修改cdh5.7为对应所要编译的CDH版本
- vi /XXX/apache-kylin-2.6.0/pom.xml:
-
$> sed -i "s/2.6.0-cdh5.7.0/2.6.0-cdhXXXX/g" `grep "cdh" -rl pom.xml` $> sed -i "s/1.1.0-cdh5.7.0/1.1.0-cdhXXXX/g" `grep "cdh" -rl pom.xml` $> sed -i "s/1.2.0-cdh5.7.0/1.2.0-cdhXXXX/g" `grep "cdh" -rl pom.xml` $> sed -i "s/3.4.5-cdh5.7.0/3.4.5-cdhXXXX/g" `grep "cdh" -rl pom.xml` $> sed -i "s/cdh5.7/cdhXXXX/g" `grep "cdh" -rl pom.xml`
- <3>. 找到net.alchim31.maven,对版本取消注释
-
<plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <!-- uncomment this on release --> <version>3.4.1</version> </plugin>
-
三、编译Kylin
1、编译命令
sudo build/script/package.sh -Dmaven.test.skip=true -Dcheckstyle.skip -PcdhXXX- 说明:
-Dmaven.test.skip=true:跳过单元测试的运行和跳过测试代码的编译-DskipTests:跳过单元测试,但是会继续编译- 编译中会执行
bower --allow-root install,需要添加sudo
- 说明:
2、编译后续步骤
-
在/XXX/apache-kylin-2.6.0/build/script/build.sh查看到:
-
#package webapp echo 'package front-end' cd webapp npm install -g bower || { exit 1; } bower --allow-root install || { exit 1; } npm install || { exit 1; } npm install -g grunt-cli || { exit 1; } grunt dev --buildEnv=dev --buildNumber=`date "+%Y%m%d%H%M%S"` || { exit 1; }
-
-
下面报错开始了...
-
<1>. 执行到
bower --allow-root install-
报错1:
-
解决:
git config --global url."git://".insteadOf https://- 或者
git config --global url."https://".insteadOf git://- 本人使用
git config --global url."git://".insteadOf https://解决
-
报错2:
- 由于不可知原因,
https://github.com/johannestroeger/bower-angular-unstable.git已经在GitHub消失了...
- 由于不可知原因,
-
解决:
- 修改/XXX/apache-kylin-2.6.0/webapp/bower.json:
- 把
"angular-mocks-unstable": "~1.1.5"替换为:"angular-mocks": "~1.2.0"
-
-
<2>. 执行到
npm install- 报错:
- phantomjs版本与系统安装版本不一致:
- phantomjs查找版本:phantomjs-1.9.8
- phantomjs安装版本:phantomjs-2.1.1
- 解决:
- 尝试手动安装部署phantomjs-1.9.8,发现与macOS Catalina 10.15.5不兼容:
- 查找phantomjs版本校验位置:
- /XXX/apache-kylin-2.6.0/webapp/package-lock.json
- 删除phantomjs部分:
-
"phantomjs": { "version": "1.9.20", "resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-1.9.20.tgz", "integrity": "sha1-RCSsog4U0lXAsIia9va4lz2hDg0=", "dev": true, "requires": { "extract-zip": "~1.5.0", "fs-extra": "~0.26.4", "hasha": "^2.2.0", "kew": "~0.7.0", "progress": "~1.1.8", "request": "~2.67.0", "request-progress": "~2.0.1", "which": "~1.2.2" }, "dependencies": { "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, "requires": { "lodash": "^4.17.14" } }, "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { "hoek": "2.x.x" } }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { "boom": "2.x.x" } }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, "form-data": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", "dev": true, "requires": { "async": "^2.0.1", "combined-stream": "^1.0.5", "mime-types": "^2.1.11" } }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { "boom": "2.x.x", "cryptiles": "2.x.x", "hoek": "2.x.x", "sntp": "1.x.x" } }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true }, "qs": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.1.tgz", "integrity": "sha1-gB/uAw4LlFDWOFrcSKTMVbRK7fw=", "dev": true }, "request": { "version": "2.67.0", "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz", "integrity": "sha1-ivdHgOK/EeoK6aqWXBHxGv0nJ0I=", "dev": true, "requires": { "aws-sign2": "~0.6.0", "bl": "~1.0.0", "caseless": "~0.11.0", "combined-stream": "~1.0.5", "extend": "~3.0.0", "forever-agent": "~0.6.1", "form-data": "~1.0.0-rc3", "har-validator": "~2.0.2", "hawk": "~3.1.0", "http-signature": "~1.1.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.7", "node-uuid": "~1.4.7", "oauth-sign": "~0.8.0", "qs": "~5.2.0", "stringstream": "~0.0.4", "tough-cookie": "~2.2.0", "tunnel-agent": "~0.4.1" } }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { "hoek": "2.x.x" } }, "tunnel-agent": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", "dev": true }, "which": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "requires": { "isexe": "^2.0.0" } } } },
- 尝试手动安装部署phantomjs-1.9.8,发现与macOS Catalina 10.15.5不兼容:
- 报错:
四、结束
- 安装包位置:
- /XXX/apache-kylin-2.6.0/dist:
- apache-kylin-2.6.0-bin.tar.gz