common/build.gradle.kts (102 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import java.text.SimpleDateFormat import java.util.Date plugins { `maven-publish` id("java") id("idea") } dependencies { implementation(project(":api")) implementation(libs.commons.collections4) implementation(libs.commons.lang3) implementation(libs.guava) implementation(libs.jackson.annotations) implementation(libs.jackson.datatype.jdk8) implementation(libs.jackson.datatype.jsr310) implementation(libs.jackson.databind) annotationProcessor(libs.lombok) compileOnly(libs.lombok) testAnnotationProcessor(libs.lombok) testCompileOnly(libs.lombok) testImplementation(libs.junit.jupiter.api) testImplementation(libs.junit.jupiter.params) testRuntimeOnly(libs.junit.jupiter.engine) } fun getGitCommitId(): String { var gitCommitId: String try { val gitPath = File(rootDir.path, ".git") val gitFolder = if (gitPath.isDirectory) { gitPath } else { val content = gitPath.readText().trim() File(rootDir.path, content.substringAfter("gitdir: ").trim()) } val head = File(gitFolder, "HEAD").readText().split(":") val isCommit = head.size == 1 gitCommitId = if (isCommit) { head[0].trim() } else { val refHead = File(gitFolder, head[1].trim()) refHead.readText().trim() } } catch (e: Exception) { println("WARN: Unable to get Git commit id : ${e.message}") gitCommitId = "" } return gitCommitId } val propertiesFile = "src/main/resources/gravitino-build-info.properties" fun writeProjectPropertiesFile() { val propertiesFile = file(propertiesFile) if (propertiesFile.exists()) { propertiesFile.delete() } val dateFormat = SimpleDateFormat("dd/MM/yyyy HH:mm:ss") val compileDate = dateFormat.format(Date()) val projectVersion = project.version.toString() val commitId = getGitCommitId() propertiesFile.parentFile.mkdirs() propertiesFile.createNewFile() propertiesFile.writer().use { writer -> writer.write( "#\n" + "# Licensed to the Apache Software Foundation (ASF) under one\n" + "# or more contributor license agreements. See the NOTICE file\n" + "# distributed with this work for additional information\n" + "# regarding copyright ownership. The ASF licenses this file\n" + "# to you under the Apache License, Version 2.0 (the\n" + "# \"License\"); you may not use this file except in compliance\n" + "# with the License. You may obtain a copy of the License at\n" + "#\n" + "# http://www.apache.org/licenses/LICENSE-2.0\n" + "#\n" + "# Unless required by applicable law or agreed to in writing,\n" + "# software distributed under the License is distributed on an\n" + "# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n" + "# KIND, either express or implied. See the License for the\n" + "# specific language governing permissions and limitations\n" + "# under the License.\n" + "#\n" ) writer.write("project.version=$projectVersion\n") writer.write("compile.date=$compileDate\n") writer.write("git.commit.id=$commitId\n") } } tasks { jar { doFirst() { writeProjectPropertiesFile() if (!file(propertiesFile).exists()) { throw GradleException("$propertiesFile file not generated!") } } from("src/main/resources") { include("gravitino-build-info.properties").duplicatesStrategy = DuplicatesStrategy.EXCLUDE } } clean { delete("$propertiesFile") } }