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

时间:2017-08-30 14:49:44

标签: scala maven sbt maven-central sbt-release

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

1 个答案:

答案 0 :(得分:15)

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

一生一次:

  1. 创建Sonatype account
  2. 对于每个新的开发者机器:

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

    3. 列出您的密钥:

      > 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]
      
    4. 发布密钥:

      > 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
      
    5. 您可以通过查看http://pool.sks-keyservers.net/pks/lookup?search=0x66AA02EC8AA60DB9

      来验证已发布的密钥
      1. 将以下内容附加到此文件(~/.sbt/${SBT_VERSION}/sonatype.sbt):

        credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", "<your username>", "<your password>")
        
      2. 对于每个新项目:

        1. 使用您的Sonatype帐户创建new JIRA issue以请求新的回购
        2. 等到above issue已解决
        3. sbt-pgpsbt-releasesbt-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")
          
        4. 以下是我用于多项目的示例build.sbt

        5. 在上面build.sbt中,将usePgpKeyHex设置为上一步中的键
        6. 对于每个新版本:

          1. 您可能必须export GPG_TTY=$(tty)gpg在命令行中输入密码
          2. sbt +release(会提示您为gpg创建的密码)
            1. 注意:指定+release内的crossScalaVersions交叉发布。如果您的构建中已启用pushChanges以将您的提交推送到git remote,请确保仅在最后pushChanges上执行crossVersion
          3. 查看Sonatype上的工件(快照版本为here
          4. 等待几个小时,以便传播到Maven Central
          5. 重新开始

            • 某些时候发布可能会在中途失败,您的存储库可能会陷入暂存状态。然后,您必须转到https://oss.sonatype.org&gt;登录&gt;暂存存储库&gt;找到你的回购&gt;点击Drop例如 enter image description here