13

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

4

1 回答 1

26

我总是忘记如何做到这一点。所以这是我的笔记:

一生中一次:

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

    > 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.netkeyserver.net验证密钥是否已发布。这可能需要一天时间才能显示

  2. 添加default-key到您的gpg.conf

    > cat ~/.gnupg/gpg.conf
    default-key F5003E5C4718B1F466B244F766AA02EC8AA60DB9
    
  3. 将以下内容附加到此文件 ( ~/.sbt/${SBT_VERSION}/sonatype.sbt):

    credentials += Credentials("Sonatype Nexus Repository Manager", "oss.sonatype.org", "<your username>", "<your password>")
    

对于每个新项目:

  1. 使用您的 Sonatype 帐户创建新的 JIRA 问题以请求新的 repo

  2. 等到上面的问题解决

  3. sbt-pgp,sbt-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 。

对于每个新版本:

  1. export GPG_TTY=$(tty)您可能需要gpg在命令行中提示密码,如下所示: 在此处输入图像描述

  2. sbt +release(将提示您输入您为其创建的密码gpg

    1. 注意:+release交叉发布跨您指定的crossScalaVersions. 如果您pushChanges在构建中启用了将您的提交推送到 git remote,请确保您pushChanges只在最后一个crossVersion.
  3. 在Sonatype上查看工件(快照版本在此处)。如果你在那里看不到它,你可以仔细检查Nexus Repository Manager

  4. 等待几个小时让它传播到Maven 中心

重新来

  • 有时发布可能会在中途失败,并且您的存储库可能会卡在暂存中。然后你必须去https://oss.sonatype.org > Login > Staging Repositories > Find your repo > 点击 Drop eg 在此处输入图像描述
于 2017-08-30T14:49:44.377 回答