167.1。基本编译

HBase 是使用 Maven 编译的。您必须至少使用 Maven 3.0.4。要检查 Maven 版本,请运行命令 mvn -version。

JDK 版本要求

从 HBase 1.0 开始,您必须使用 Java 7 或更高版本从源代码构建。有关受支持的 JDK 版本的更完整信息,请参见 java

167.1.1。 Maven 构建命令

所有命令都从本地 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 

167.1.2。运行所有或单个单元测试

请参阅 hbase.unittests 中的 hbase.unittests.cmds 部分

167.1.3。建立各种 hadoop 版本。

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

167.1.4。构建 Protobuf

您可能需要更改驻留在 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

167.1.5。建立节俭

您可能需要更改驻留在 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 

167.1.6。建立一个 Tarball

您可以通过运行以下命令,在不通过发布中描述的发布过程的情况下构建 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 

167.1.7。建立陷阱

Maven Site 失败

如果看到Unable to find resource 'VM_global_library.vm',请忽略它。这不是错误。虽然这是官方丑陋