2

我正在使用 sbt-assembly 插件为我的 scala 项目构建一个胖 Jar。有没有办法可以在 jar 清单中包含 git commit id,类似于git-commit-id-plugin对 maven 执行的操作。

谢谢

4

1 回答 1

1

老问题,但我去...

您可以将sbt-git插件与 sbt-assembly 一起使用,以便在MANIFEST.MF文件中包含 git 信息。

要将信息添加到MANIFEST.MF文件中,您可以通过packageOptions以下方式使用 sbt 键:

import sbt.Package.ManifestAttributes
import com.typesafe.sbt.SbtGit.git
packageOptions := Seq(ManifestAttributes(("Repository-Commit", git.gitHeadCommit.value.get)))

请参阅此处的示例:spark-authorizer

此信息将存储在MANIFEST.MFsbt-assembly 生成的 fat jar 中包含的文件中:

Manifest-Version: 1.0 
Implementation-Title: spark-authorizer
Repository-Commit: 12538262c1be14800eb820163de6c46cdbd69c99
Implementation-Version: 0.1.0-SNAPSHOT
Specification-Vendor: de.example.playground.spark.authorizer
Specification-Title: spark-authorizer
Implementation-Vendor-Id: de.example.playground.spark.authorizer
Specification-Version: 0.1.0-SNAPSHOT
Implementation-Vendor: de.example.playground.spark.authorizer

您可以添加任意数量的值packageOptions。所有这些都将包含在 MANIFEST.MF 文件中。

于 2020-03-01T22:06:38.783 回答