如何使用sbt将Scala库发布到Maven Central?

pat*_*rit 7 scala maven sbt maven-central sbt-release

我有一个使用SBT的开源Scala项目,我想将我的库发布到Maven.我该怎么做?

pat*_*rit 20

我总是忘记怎么做.所以这是我的笔记:

一旦进入你的生活:

  1. 创建Sonatype帐户

对于每个新的开发者机器:

  1. gpg例如在OSX上安装:brew install gpg
  2. 运行gpg --gen-key以生成新密钥.记住您使用的密码和电子邮件.

  3. 列出你的钥匙:

    > 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]
    
    Run Code Online (Sandbox Code Playgroud)
  4. 发布您的密钥:

    > gpg --keyserver hkp://pool.sks-keyservers.net --send-keys F5003E5C4718B1F466B244F766AA02EC8AA60DB9
    
    gpg: sending key 66AA02EC8AA60DB9 to hkp://pool.sks-keyservers.net
    
    Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式验证已发布的密钥:http://pool.sks-keyservers.net/pks/lookup?search = 0x66AA02EC8AA60DB9

  1. 在此文件后附加(default-key):

    > cat ~/.gnupg/gpg.conf
    default-key F5003E5C4718B1F466B244F766AA02EC8AA60DB9
    
    Run Code Online (Sandbox Code Playgroud)

对于每个新项目:

  1. 使用您的Sonatype帐户创建新的JIRA问题以请求新的回购
  2. 等到上述问题得到解决
  3. 添加gpg.conf,~/.sbt/${SBT_VERSION}/sonatype.sbtsbt-pgp作为项目的插件.这是一个示例plugins.sbt:

    credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", "<your username>", "<your password>")
    
    Run Code Online (Sandbox Code Playgroud)
  4. 这是我用于多项目的build.sbt示例.

  5. 在上面sbt-release,sbt-sonatype从上面的步骤设置为键

对于每个新版本:

  1. 你可能需要做的export GPG_TTY=$(tty),让gpg做密码提示在命令行
  2. sbt +release(将提示您为其创建的密码gpg)
    1. 注意:+release跨指定的交叉发布crossScalaVersions.如果您已pushChanges在构建中启用了将提交推送到git remote,请确保pushChanges仅在最后一次执行一次crossVersion.
  3. Sonatype上查看工件(快照版本在这里)
  4. 等几个小时才能传播到Maven Central

从头开始

  • 某些时候发布可能会在中途失败,您的存储库可能会陷入暂存状态.然后,您必须转到https://oss.sonatype.org >登录>暂存存储库>查找您的存储库>单击删除例如 在此输入图像描述