1.源码编译通用步骤
源码编译通用步骤
一、搭建编译环境
一般编译环境为Linux + JDK + Maven,有些框架可能需要别的环境支持,一般都会注明,在后面细说。以下教程都是基于Linux + JDK8环境编译。
Linux和JDK环境这里不再赘述
MAVEN环境搭建
#1. 从apache网站拉取tar包并解压 MVNTAR=$(curl http://maven.apache.org/download.cgi | grep -E ">apache-maven-.*bin\.tar\.gz<" | sed 's/.*a href="\(.*\)".*/\1/g') curl $MVNTAR | tar zxC /opt/module mv /opt/module/$(basename $MVNTAR | cut -d - -f 1,2,3) /opt/module/maven #2. 配置环境变量 vim /etc/profile.d/my_env.sh #添加如下内容并保存退出 export M2_HOME=/opt/module/maven export MAVEN_HOME=/opt/module/maven export PATH=${MAVEN_HOME}/bin:${PATH}完成后重启Xshell会话
二、下载源码
下载你想要编译的框架的源码。一般源码下载有两种方式:
- 想编译的版本已经发布release版,但是由于兼容性原因需要重新编译。这种情况直接从框架官网下载源码包并解压即可。
- 想测试框架还没发布的最新功能。此时从git托管服务器拉取最新源码,这时,我们需要git环境
Git环境搭建
sudo yum install -y epel-release sudo yum install -y git到 https://git-wip-us.apache.org/repos/asf 查看想要编译的框架的git服务器,拉取源码(以Hive为例)
#新建源码存储目录 mkdir -p /opt/software/source cd /opt/software/source #拉取源码 git clone https://git-wip-us.apache.org/repos/asf/hive.git进入拉取的源码目录,切换到自己想要的分支
#查看所有本地和远程分支,这里也可以切换到之前版本的分支 cd hive git branch -a #新建本地分支同步远程分支 git checkout -b 3.1 origin/branch-3.1如果想切换到特定release的源码,使用git tag命令
#查看所有tag git tag #切换到想要的tag,这里以release-3.1.2为例 git checkout rel/release-3.1.2
三、查看编译说明
一般来说,源码根目录都会有building.txt之类的文件作为编译说明,如果没有找到,也可以去官网查看编译说明。说明里一般都会注明前置要求,例如一些额外的编译环境要求等。
Hive没有前置要求,我们直接进入第四步
四、对源码做必要修改
一般我们只有在框架不兼容的情况下我们需要重新编译,不兼容一般是由于框架依赖版本不一致造成的,一般我们只需要编辑框架的pom.xml文件修改依赖版本即可。但是有些依赖新版本和旧版本不兼容,此时我们就需要对源码进行更多的修改。这些修改最好在IDE中进行。
Hive的guava版本和Hadoop 3.1.3的不兼容,我们修改其为27.0-jre
将
<guava.version>19.0</guava.version>
修改为
<guava.version>27.0-jre</guava.version>这个依赖新老版本就不兼容,修改版本后我们需要对源码进行必要修改。详细修改步骤会在另外一篇教程中讲述
五、编译
准备工作全部做完,最后我们开始编译。一般的编译命令为:
mvn clean package -Pdist -DskipTests -Dmaven.javadoc.skip=true然后静待编译完成。这个过程会比较久,而且会从maven官网拉取大量jar包,所以要保证网络状况良好。
编译完成的Tar包的位置,各个框架都不一样,我们可以用下面的命令查找
find ./ -name *.tar.gz