如何使用 sbt 将 Scala 库发布到 Maven Central?
How to release a Scala library to Maven Central using sbt?
我有一个使用 SBT 的开源 Scala 项目,我想将我的库发布到 Maven。我该怎么做?
我总是忘记怎么做。所以这是我的笔记:
一生一次:
对于每台新的开发人员机器:
安装 gpg
例如在 OSX 上:brew install gpg
运行 gpg --gen-key
生成新密钥。 记住您使用的密码和电子邮件。
确保在列出密钥时看到它:
> gpg --list-secret-keys
~/.gnupg/pubring.kbx
-----------------------------------
sec rsa2048 2019-06-13 [SC] [expires: 2021-06-12]
F5003E5C4718B1F466B244F766AA02EC8AA60DB9
uid [ultimate] Pathikrit Bhowmick <pathikritbhowmick@msn.com>
ssb rsa2048 2019-06-13 [E] [expires: 2021-06-12]
发布您的密钥:
> gpg --keyserver hkp://pool.sks-keyservers.net --send-keys F5003E5C4718B1F466B244F766AA02EC8AA60DB9
gpg: sending key 66AA02EC8AA60DB9 to hkp://pool.sks-keyservers.net
您也可以通过复制密钥手动发布您的密钥
> gpg --armor --export F5003E5C4718B1F466B244F766AA02EC8AA60DB9
并在此处提交 http://keyserver.ubuntu.com:11371/
通过搜索 gnupg.net or keyserver.net 验证密钥是否已发布。 这最多可能需要一天才能显示
将 default-key
添加到您的 gpg.conf
:
> cat ~/.gnupg/gpg.conf
default-key F5003E5C4718B1F466B244F766AA02EC8AA60DB9
将以下内容附加到此文件 (~/.sbt/${SBT_VERSION}/sonatype.sbt
):
credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", "<your username>", "<your password>")
对于每个新项目:
使用您的 Sonatype 帐户创建 new JIRA issue 以请求新的存储库
等到above issue解决
将 sbt-pgp
、sbt-release
和 sbt-sonatype
作为插件添加到您的项目中。这是一个例子 plugins.sbt:
addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.0")
addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0")
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "0.5.1")
这是我用于多项目的示例 build.sbt。
对于每个新版本:
您可能必须执行 export GPG_TTY=$(tty)
才能让 gpg
在命令行中执行密码提示,如下所示:
sbt +release
(将提示输入您为 gpg
创建的密码)
- 注意:
+release
跨您指定的 crossScalaVersions
交叉发布。如果您在构建中启用了 pushChanges
以将您的提交推送到 git 远程,请确保您只在最后一个 crossVersion
. 上执行 pushChanges
一次
在 Sonatype (the snapshot versions are here). If you cannot see it there you can double check the Nexus Repository Manager
上查看工件
等待几个小时让它传播到 Maven Central
重新开始
- 有时发布可能会中途失败,您的存储库可能会卡在暂存中。然后你必须去 https://oss.sonatype.org > Login > Staging Repositories > Find your repo > Click Drop e.g.
我有一个使用 SBT 的开源 Scala 项目,我想将我的库发布到 Maven。我该怎么做?
我总是忘记怎么做。所以这是我的笔记:
一生一次:
对于每台新的开发人员机器:
安装
gpg
例如在 OSX 上:brew install gpg
运行
gpg --gen-key
生成新密钥。 记住您使用的密码和电子邮件。确保在列出密钥时看到它:
> gpg --list-secret-keys ~/.gnupg/pubring.kbx ----------------------------------- sec rsa2048 2019-06-13 [SC] [expires: 2021-06-12] F5003E5C4718B1F466B244F766AA02EC8AA60DB9 uid [ultimate] Pathikrit Bhowmick <pathikritbhowmick@msn.com> ssb rsa2048 2019-06-13 [E] [expires: 2021-06-12]
发布您的密钥:
> gpg --keyserver hkp://pool.sks-keyservers.net --send-keys F5003E5C4718B1F466B244F766AA02EC8AA60DB9 gpg: sending key 66AA02EC8AA60DB9 to hkp://pool.sks-keyservers.net
您也可以通过复制密钥手动发布您的密钥
> gpg --armor --export F5003E5C4718B1F466B244F766AA02EC8AA60DB9
并在此处提交 http://keyserver.ubuntu.com:11371/
通过搜索 gnupg.net or keyserver.net 验证密钥是否已发布。 这最多可能需要一天才能显示
将
default-key
添加到您的gpg.conf
:> cat ~/.gnupg/gpg.conf default-key F5003E5C4718B1F466B244F766AA02EC8AA60DB9
将以下内容附加到此文件 (
~/.sbt/${SBT_VERSION}/sonatype.sbt
):credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", "<your username>", "<your password>")
对于每个新项目:
使用您的 Sonatype 帐户创建 new JIRA issue 以请求新的存储库
等到above issue解决
将
sbt-pgp
、sbt-release
和sbt-sonatype
作为插件添加到您的项目中。这是一个例子 plugins.sbt:addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.0") addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.0") addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "0.5.1")
这是我用于多项目的示例 build.sbt。
对于每个新版本:
您可能必须执行
export GPG_TTY=$(tty)
才能让gpg
在命令行中执行密码提示,如下所示:sbt +release
(将提示输入您为gpg
创建的密码)- 注意:
+release
跨您指定的crossScalaVersions
交叉发布。如果您在构建中启用了pushChanges
以将您的提交推送到 git 远程,请确保您只在最后一个crossVersion
. 上执行
pushChanges
一次- 注意:
在 Sonatype (the snapshot versions are here). If you cannot see it there you can double check the Nexus Repository Manager
上查看工件
等待几个小时让它传播到 Maven Central
重新开始
- 有时发布可能会中途失败,您的存储库可能会卡在暂存中。然后你必须去 https://oss.sonatype.org > Login > Staging Repositories > Find your repo > Click Drop e.g.