前言
iceberg本地编译。
一、下载
git clone https://github.com/apache/iceberg.git
二、编辑gradle文件,添加国内源
在buildscript的repositories中添加
maven{ url 'https://mirrors.huaweicloud.com/repository/maven/' }
添加后如下所示:
buildscript {
repositories {
maven{ url 'https://mirrors.huaweicloud.com/repository/maven/' }
gradlePluginPortal()
}
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:5.0.0'
classpath 'com.palantir.baseline:gradle-baseline-java:3.36.2'
classpath 'com.palantir.gradle.gitversion:gradle-git-version:0.12.3'
classpath 'com.diffplug.spotless:spotless-plugin-gradle:5.14.0'
classpath 'gradle.plugin.org.inferred:gradle-processors:2.1.0'
classpath 'me.champeau.gradle:jmh-gradle-plugin:0.4.8'
}
}
allprojects中添加
maven {
url 'https://mirrors.huaweicloud.com/repository/maven/'
}
添加后如下所示
allprojects {
group = "org.apache.iceberg"
version = getProjectVersion()
repositories {
maven {
url 'https://mirrors.huaweicloud.com/repository/maven/'
}
mavenCentral()
mavenLocal()
}
project.ext {
Spark30Version = '3.0.3'
Spark31Version = '3.1.1'
}
}
下载依赖(可选) 进入项目根目录,执行脚本:
./gradlew dependencies
三、正式编译
进入项目根目录,执行:
./gradlew build
上述命令会执行代码里的单元测试,如果不需要,则执行以下命令:
./gradlew build -x test -x testSpark31
解释: 在gradle中,如果要跳过某个task,就可以添加–exclude-task参数(短命令便是-x),跟上task名称,在很多项目中,单元测试是以test命名的。 在iceberg里面,关于spark的单元测试,有些被命名为testSpark31,所以需要将此也一并跳过。 有些版本里面是没有testSpark31的,所以如果报项目中找不到它,就去除即可,反之也一样,如果你在编译中发现,依旧还有一些测试没有跳过,则可以到build.gradle文件中,查找测试相关的task,在此处一并跳过,查找测试相关task时可按下方示例:
task testSpark31(type: Test) {
dependsOn classes
group = "verification"
description = "Test against Spark 3.1"
testClassesDirs = sourceSets.spark31.output.classesDirs
classpath = sourceSets.spark31.runtimeClasspath + sourceSets.main.output
}
|