我有一个使用SBT的开源Scala项目,我想把我的库发布到Maven。我该怎么做?
ymzxtsji1#
我总是忘了怎么做。下面是我的笔记:
1.创建Sonatype account
1.例如,在OSX上安装gpg:brew install gpg1.运行gpg --gen-key生成新密钥。记住您使用的密码和电子邮件。1.请确保在列出密钥时看到它:
gpg
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]
1.发布您的密钥:
> 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/1.通过搜索gnupg.net或keyserver.net验证密钥是否已发布。* 这可能需要一天时间才能显示 *1.将default-key添加到您的gpg.conf:
default-key
gpg.conf
> cat ~/.gnupg/gpg.conf default-key F5003E5C4718B1F466B244F766AA02EC8AA60DB9
1.将以下内容附加到此文件(~/.sbt/${SBT_VERSION}/sonatype.sbt):
~/.sbt/${SBT_VERSION}/sonatype.sbt
credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", "<your username>", "<your password>")
1.使用您的Sonatype帐户创建new JIRA issue以请求新的repo1.等待above issue得到解决1.将sbt-pgp、sbt-release和sbt-sonatype作为插件添加到您的项目中。下面是plugins.sbt的示例:
sbt-pgp
sbt-release
sbt-sonatype
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")
1.下面是我用于多项目的build.sbt示例。
1.您可能需要执行export GPG_TTY=$(tty),以让gpg在命令行中进行密码提示,如下所示:
export GPG_TTY=$(tty)
sbt +release
+release
crossScalaVersions
pushChanges
crossVersion
1条答案
按热度按时间ymzxtsji1#
我总是忘了怎么做。下面是我的笔记:
一生中只有一次:
1.创建Sonatype account
对于每台新开发人员计算机:
1.例如,在OSX上安装
gpg
:brew install gpg
1.运行
gpg --gen-key
生成新密钥。记住您使用的密码和电子邮件。1.请确保在列出密钥时看到它:
1.发布您的密钥:
您还可以通过复制密钥来手动发布密钥
并在此处提交http://keyserver.ubuntu.com:11371/
1.通过搜索gnupg.net或keyserver.net验证密钥是否已发布。* 这可能需要一天时间才能显示 *
1.将
default-key
添加到您的gpg.conf
:1.将以下内容附加到此文件(
~/.sbt/${SBT_VERSION}/sonatype.sbt
):对于每个新项目:
1.使用您的Sonatype帐户创建new JIRA issue以请求新的repo
1.等待above issue得到解决
1.将
sbt-pgp
、sbt-release
和sbt-sonatype
作为插件添加到您的项目中。下面是plugins.sbt的示例:1.下面是我用于多项目的build.sbt示例。
对于每个新版本:
1.您可能需要执行
export GPG_TTY=$(tty)
,以让gpg
在命令行中进行密码提示,如下所示:sbt +release
(将提示输入您为gpg
创建的密码)1.注意:
+release
会在你指定的crossScalaVersions
上交叉发布。如果你在你的构建中启用了pushChanges
来推送提交到git remote,请确保你只在最后一个crossVersion
上执行一次pushChanges
。1.在Sonatype上查看工件(快照版本为here)。如果在那里看不到工件,可以仔细检查Nexus存储库管理器
1.等待几个小时,让它传播到Maven Central
重新开始