HBase 是使用 Maven 编译的。您必须至少使用 Maven 3.0.4。要检查 Maven 版本,请运行命令 mvn -version。
JDK 版本要求
从 HBase 1.0 开始,您必须使用 Java 7 或更高版本从源代码构建。有关受支持的 JDK 版本的更完整信息,请参见 java 。
所有命令都从本地 HBase 项目目录执行。
从其 java 源代码编译 HBase 的最简单命令是使用package
目标,该目标使用编译的文件构建 JAR。
mvn package -DskipTests
或者,在编译之前进行清理:
mvn clean package -DskipTests
如上面在 eclipse 中所述设置 Eclipse,您也可以在 Eclipse 中使用 Build 命令。要创建完整的可安装 HBase 包需要多做一些工作,请继续阅读。
compile
目标不会使用编译的文件创建 JAR。
mvn compile
mvn clean compile
要在 〜/ .m2 / 目录中安装 JAR,请使用install
目标。
mvn install
mvn clean install
mvn clean install -DskipTests
请参阅 hbase.unittests 中的 hbase.unittests.cmds 部分
HBase 支持针对 Apache Hadoop 版本构建:2.y 和 3.y(早期版本工件)。默认情况下,我们针对 Hadoop 2.x 进行构建。
要针对 Hadoop 2.y 行中的特定版本进行构建,请设置为-Dhadoop-two.version=2.6.3
。
mvn -Dhadoop-two.version=2.6.3 ...
要更改我们构建的 Hadoop 的主要版本行,请在调用 mvn 时添加 hadoop.profile 属性:
mvn -Dhadoop.profile=3.0 ...
以上内容将针对我们在 pom.xml 中作为我们的'3.0'版本的任何显式 hadoop 3.y 版本构建。测试可能不会全部通过,因此您可能需要通过-DskipTests
,除非您倾向于修复失败的测试。
要选择特定的 Hadoop 3.y 版本,您需要设置 hadoop-three.version 属性,例如-Dhadoop-three.version=3.0.0
。
您可能需要更改驻留在 hbase-protocol 模块或其他模块中的 protobuf 定义。
在 hbase-2.0.0 之前,protobuf 定义文件遍布所有 hbase 模块,但现在所有与 protobuf 相关的文件必须驻留在 hbase 协议模块中;我们正在尝试包含我们的 protobuf 使用,以便我们可以自由地更改版本而不会破坏任何下游项目使用 protobuf。
protobuf 文件位于 hbase-protocol / src / main / protobuf 中。要使更改生效,您需要重新生成类。
mvn package -pl hbase-protocol -am
类似地,内部使用的 protobuf 定义位于 hbase-protocol-shaded 模块中。
mvn package -pl hbase-protocol-shaded -am
通常,使用本机protoc
二进制文件完成 protobuf 代码生成。在我们的构建中,我们使用 maven 插件以方便使用;但是,插件可能无法为所有平台检索适当的二进制文件。如果您发现自己处于 protoc 失败的平台上,则必须从源代码编译 protoc,并独立于我们的 maven 构建运行它。您可以通过在 maven 参数中指定-Dprotoc.skip
来禁用内联代码生成,从而允许您的构建继续进行。
如果您需要手动生成 protobuf 文件,则不应在后续 maven 调用中使用
clean
,因为这将删除新生成的文件。
有关更多详细信息,请阅读 hbase-protocol / README.txt
您可能需要更改驻留在 hbase-thrift 模块或其他模块中的 thrift 定义。
thrift 文件位于 hbase-thrift / src / main / resources 中。要使更改生效,您需要重新生成类。您可以使用 maven profile compile-thrift
来执行此操作。
mvn compile -Pcompile-thrift
您可能还想使用以下命令为 thrift 二进制文件定义thrift.path
:
mvn compile -Pcompile-thrift -Dthrift.path=/opt/local/bin/thrift
您可以通过运行以下命令,在不通过发布中描述的发布过程的情况下构建 tarball:
mvn -DskipTests clean install && mvn -DskipTests package assembly:single
分发 tarball 构建在 hbase-assembly / target / hbase- <version>-bin.tar.gz</version> 中。
您可以通过在 maven 命令中安装或部署之前使用程序集:单个目标来安装或部署 tarball:
mvn -DskipTests package assembly:single install
mvn -DskipTests package assembly:single deploy
如果看到Unable to find resource 'VM_global_library.vm'
,请忽略它。这不是错误。虽然这是官方丑陋。