我有一个使用SBT的开源Scala项目,我想将我的库发布到Maven。我该怎么做?
答案 0 :(得分:15)
我总是忘记怎么做。所以这是我的笔记:
gpg
,例如在OSX上:brew install gpg
运行gpg --gen-key
以生成新密钥。记住您使用的密码和电子邮件。
列出您的密钥:
> gpg --list-keys pathikritbhowmick@msn.com
pub rsa2048 2018-07-24 [SC] [expires: 2020-07-23]
F5003E5C4718B1F466B244F766AA02EC8AA60DB9
uid [ultimate] Pathikrit Bhowmick <pathikritbhowmick@msn.com>
sub rsa2048
2018-07-24 [E] [expires: 2020-07-23]
发布密钥:
> gpg --keyserver hkp://pool.sks-keyservers.net --send-keys F5003E5C4718B1F466B244F766AA02EC8AA60DB9
gpg: WARNING: server 'dirmngr' is older than us (2.2.7 < 2.2.9)
gpg: Note: Outdated servers may lack important security fixes.
gpg: Note: Use the command "gpgconf --kill all" to restart them.
gpg: sending key 66AA02EC8AA60DB9 to hkp://pool.sks-keyservers.net
您可以通过查看http://pool.sks-keyservers.net/pks/lookup?search=0x66AA02EC8AA60DB9
来验证已发布的密钥将以下内容附加到此文件(~/.sbt/${SBT_VERSION}/sonatype.sbt
):
credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", "<your username>", "<your password>")
将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。
build.sbt
中,将usePgpKeyHex
设置为上一步中的键export GPG_TTY=$(tty)
让gpg
在命令行中输入密码sbt +release
(会提示您为gpg
创建的密码)
+release
内的crossScalaVersions
交叉发布。如果您的构建中已启用pushChanges
以将您的提交推送到git remote,请确保仅在最后pushChanges
上执行crossVersion
。