我有一个
scala
项目,并且使用 SBT
我能够从中生成一个 jar
文件。
我的下一个挑战是将生成的 jar 文件发布到 Gitlab 的包存储库中,以便我可以在另一个
scala
项目中引用此 jar 文件(模块)。
我找到了一些资源,使用 MAVEN 或 SBT .. 但不知道如何开始,因为我是新手,而且有点迷失。是否也可以使用 SBT
发布文件?
参考文献1:我迷失在GRADLE和MAVEN之间
参考2:我对此迷失了,因为我不清楚如何实现它以及maven存储库和jar文件之间的关系是什么。
非常感谢任何简单的指导/澄清。
你应该看看SBT的发布方式:https://www.scala-sbt.org/1.x/docs/Publishing.html
然后将“存储库 URL”修改为您的 Gitlab 的 URL。并遵循 Gitlab 文档必须定义任何特定配置。
GitLab 现在(自 2023 年起)原生支持 sbt 推/拉,请参阅:https://gitlab.com/gitlab-org/gitlab/-/issues/408479
object Registry {
val credentials: Credentials = sys.env
.get("CI_JOB_TOKEN") // automatically generated token in the gitlab-ci
.map(Credentials("GitLab Packages Registry", "gitlab.com", "gitlab-ci-token", _))
.getOrElse(Credentials(Path.userHome / ".sbt" / ".credentials")) // for local development
val additionalResolvers: Seq[MavenRepository] = Seq(
"GitLab" at
"https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/maven"
)
def publishToGitlab(projectId: Int): Option[MavenRepository] =
Some("gitlab" at s"https://gitlab.com/api/v4/projects/$projectId/packages/maven")
}
build.sbt
:
ThisBuild / resolvers ++= Registry.additionalResolvers
ThisBuild / credentials += Registry.credentials
ThisBuild / publishTo := Registry.publishToGitlab(37794088) // Gitlab project id
.sbt/.credentials
:
realm=GitLab Packages Registry
host=gitlab.com
user=Private-Token
password=<YOUR-TOKEN>