构建

Maven

师成师成· 更新于 2026-09-28· 阅读 9 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

本指南介绍如何使用 Maven 从源码构建 Apache Ozone,并为其部署做好准备。

前提条件

开始之前,请确保构建机上已安装以下软件:

  • Java 1.8 或更高版本
  • Apache Maven 3.6.3 或更高版本
  • Git(如果从源代码仓库构建)

获取源代码

你可以通过从 Git 克隆源代码,或者下载官方源码 tar 包来构建 Apache Ozone。

选择以下方法之一获取源代码:

  • Git
  • Tar 包

使用此选项可以构建 Ozone 的任意发行版、标签或提交。

git clone https://github.com/apache/ozone.git
cd ozone

构建项目

Apache Ozone 使用 Maven 作为其构建系统。构建过程会编译源代码、运行测试,并生成可部署的构件。该项目支持多种构建配置,以满足不同的开发和部署需求。

ARM 架构 Apple 芯片(Apple M1、M2 等)需要的额外步骤

如果您使用的是基于 ARM 架构的 Apple 芯片 Mac,请执行本节中的额外步骤。

为 ARM 架构的 Mac 编译并修补 Protobuf 2.5.0 版本

注意:这些步骤是 Ozone 2.1.x 及更早版本支持 Hadoop 2 所必需的。由于 HDDS-5407 移除了 protobuf 2.5.0,在 Ozone 2.2.0 及更高版本中将不再需要这些步骤。

执行以下命令来编译并修补 Protobuf 2.5.0 版本:

PROTOBUF_VERSION="2.5.0"
curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz
tar xzf protobuf-2.5.0.tar.gz
pushd protobuf-2.5.0

接下来,插入补丁以在 src/google/protobuf/stubs/platform_macros.h 中添加 arm64 宏:

# Patch to insert arm64 macro
patch -p1 << EOF
diff --git a/src/google/protobuf/stubs/platform_macros.h b/src/google/protobuf/stubs/platform_macros.h
index b1df60e..8a68655 100644
--- a/src/google/protobuf/stubs/platform_macros.h
+++ b/src/google/protobuf/stubs/platform_macros.h
@@ -57,6 +57,9 @@
 #elif defined(__ppc__)
 #define GOOGLE_PROTOBUF_ARCH_PPC 1
 #define GOOGLE_PROTOBUF_ARCH_32_BIT 1
+#elif defined(__arm64__)
+#define GOOGLE_PROTOBUF_ARCH_ARM 1
+#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
 #else
 #error Host architecture was not detected as supported by protobuf
 #endif
EOF

执行以下命令来构建 protoc:

./configure --disable-shared
make -j

执行以下命令,将 protoc 2.5.0 版本安装到本地 Maven 仓库中:

mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=${PROTOBUF_VERSION} -Dclassifier=osx-aarch_64 -Dpackaging=exe -Dfile=src/protoc

如果你使用的是 Maven 3.9.x 或更高版本,请执行以下命令。对于 3.8.x 及更早版本,不需要执行此命令:

mv $HOME/.m2/repository/com/google/protobuf/protoc/${PROTOBUF_VERSION}/protoc-${PROTOBUF_VERSION}-osx-aarch_64 $HOME/.m2/repository/com/google/protobuf/protoc/${PROTOBUF_VERSION}/protoc-${PROTOBUF_VERSION}-osx-aarch_64.exe

构建选项

构建系统提供了多个选项,你可以根据自身需求定制构建过程。

包含测试的基础构建

mvn clean package

该命令将会:

  • 清理之前的构建产物
  • 编译源代码
  • 将编译后的代码打包为 JAR 文件
  • 在 hadoop-ozone/dist/target/ozone-<version> 中创建发行版
  • 在构建过程中运行单元测试和集成测试

note

此命令不会运行验收测试。有关测试执行说明,请参阅验收测试页面。

常用 Maven 构建选项

命令说明
-DskipTests=true跳过所有测试
-Pdist在 hadoop-ozone/dist/target 中创建一个 tar 包,其中包含部署所需的所有文件
-DskipRecon跳过构建 Recon 的 Javascript 前端
-T 4使用 4 个线程进行并行构建(可根据你的 CPU 进行调整)
-T 2C每个核心使用 2 个线程进行并行构建
-am -pl :<module-name>在项目根目录下运行时,构建指定模块及其依赖项
-DskipShade跳过 shading 处理。通过跳过客户端所使用的 ozone-filesystem-hadoop3 fat jar 构建,可以节省大量时间
-Dmaven.artifact.threads=30允许 Maven 同时下载 30 个构件。默认值为 5。当 Maven 缓存此前尚未填充时,这可以大幅加快构建过程。
-Pnative构建原生模块。目前仅影响 hdds-rocks-native

构建输出

构建过程会生成几个重要的构件:

  • 发行版压缩包:hadoop-ozone/dist/target/ozone-<version>.tar.gz(使用 -Pdist 时生成)
  • 发行版目录:hadoop-ozone/dist/target/ozone-<version>/
  • 各模块 JAR 文件:hadoop-ozone/dist/target/ozone-<version>/share/ozone/lib

您可以运行一个简单的 Ozone 命令来测试编译结果,该命令会显示 Ozone 的版本号:

hadoop-ozone/dist/target/ozone-<version>/bin/ozone version

后续步骤

在裸机或 Docker 集群上部署二进制文件,即可运行构建。

评论

登录后参与评论

正在加载评论…