工作环境不能连外网,所以HIVE的编译碰到了一些问题,内容是去年年中写好的,今天整理电脑时发现它,就发上了来。
1. 使用svn将源码下载到本地:svn co http://svn.apache.org/repos/asf/hive/trunk
2. 运行ant编译
3. 将编译过含所有依赖包的trunk文件夹复制到离线机器
4. 修改build.xml,将clean-offline目标修改成如下所示
<target name="clean-offline" if="offline">
<!-- preserve the downloaded ivy.jar -->
<delete quiet="true"includeemptydirs="true">
<fileset dir="${build.dir.hive}"excludes="ivy/**/* ivy/* hadoopcore/** hadoopcore/*"/>
</delete>
</target>
或者加入自定义的clean-hive目标如下:
<target name="clean-hive">
<deleteincludeemptydirs="true">
<filesetdir="${build.dir.hive}" excludes="ivy/**/* ivy/* hadoopcore/**hadoopcore/*"/>
</delete>
</target>
本文使用第二种方式:
5. 修改build-common.xml文件"ivy-retrieve"目标,去掉ivy内容,使其不执行retrieve过程:
<target name="ivy-retrieve" depends="ivy-resolve"
description="Retrieve Ivy-managed artifacts">
</target>
6. 运行ant –Doffline=true即可编译
7. 运行ant clean-hive即可清理编译结果方便下次重新编译
8. 编辑"trunk/build.properties"中version用于标识不同的编译版本