3

在尝试将版本推送到 Maven 时,我遇到了几个错误,包括:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Unable to commit files
Provider message:
The git-commit command failed.
Command output:
4

1 回答 1

7

因此,这实际上只是我将托管在 git 上的开源项目的版本推送到Sonatype maven repo所必须经历的过程的脑残。几乎这里的所有内容都在单独的 StackOverflow 问题中进行了介绍,但是对于那些(像我一样)第一次这样做的人来说,概述很有用。

整个过程实际上只是两个命令:

  • mvn 发布:准备
  • mvn 发布:执行

然而,正是这些繁琐的细节吸引了我。所以这是我需要遵循的过程:

  1. 签入对项目的所有更改。如果有任何未推送的本地更改,Maven 会抱怨。
  2. 确保您在 git 中有一个 SSH 公钥。这将修复或防止Permission denied (publickey).错误。
  3. 确保您的项目版本是 SNAPSHOT 并删除 release.properties 文件(如果存在)。这将修复或防止git-commit command failed.错误。
  4. 运行上面列出的 Maven 命令。
  5. 我将 GPG 密钥详细信息添加到 ~/.m2/settings.xm。下面列出了完整的文件。
  6. 此时,您将在暂存区等待未签名的文物。我只上传了一个父 POM 文件,所以我需要使用命令签名mvn -Pgpg gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=pom.xml -Dfile=pom.xml
  7. 现在使用https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-8a.ReleaseIt的说明发布它

这是 ~/.m2/settings.xml 文件。

<settings>
    <servers>
        <server>
            <id>sonatype-nexus-snapshots</id>
            <username>username</username>
            <password>password</password>
        </server>
        <server>
            <id>sonatype-nexus-staging</id>
            <username>username</username>
            <password>password</password>
        </server>
    </servers>
    <profiles>
        <profile>
            <id>gpg</id>
            <properties>
                <gpg.passphrase>password</gpg.passphrase>
                <gpg.keyname>12345678</gpg.keyname>
            </properties>
        </profile>
    </profiles>
</settings>
于 2012-10-03T22:52:58.213 回答