【发布时间】:2018-02-08 08:29:19
【问题描述】:
我有一个使用 SBT 的开源 Scala 项目,我想将我的库发布到 Maven。我该怎么做?
【问题讨论】:
标签: scala maven sbt maven-central sbt-release
我有一个使用 SBT 的开源 Scala 项目,我想将我的库发布到 Maven。我该怎么做?
【问题讨论】:
标签: scala maven sbt maven-central sbt-release
我总是忘记怎么做。所以这是我的笔记:
安装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 或 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 以请求新的 repo
等到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。
sbt +release(将提示输入您为gpg 创建的密码)
+release 跨您指定的crossScalaVersions 交叉发布。如果您在构建中启用了 pushChanges 以将您的提交推送到 git remote,请确保您只在最后一个 crossVersion 上执行一次 pushChanges。在Sonatype 上查看工件(快照版本为here)。如果您在那里看不到它,您可以仔细检查Nexus Repository Manager
等待几个小时让它传播到Maven Central
【讨论】:
sbt>module/publishSigned。它抛出错误:[error] gpg: [don't know]: invalid packet (ctb=2d) [error] gpg: keydb_search failed: Invalid packet [error] gpg: no default secret key: Invalid packet [error] gpg: signing failed: Invalid packet你知道如何解决这个问题吗?
release 任务,你不会这样做
com.github.*,替代方案是使用 io.github.* central.sonatype.org/changelog/…