在Maven中发布多个版本的错误?

Phy*_*yxx 3 maven

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

Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Unable to commit files
Provider message:
The git-commit command failed.
Command output:
Run Code Online (Sandbox Code Playgroud)

Phy*_*yxx 7

所以这实际上只是我必须经历的过程的大脑转储,以便将在git上托管的开源项目的发布推送到Sonatype maven repo.这里几乎所有的东西都已经被单独的StackOverflow问题所覆盖,但是对于那些(像我这样)第一次这样做,概述是有用的.

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

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

然而,令人抓狂的是细节.所以这是我需要遵循的过程:

  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>
Run Code Online (Sandbox Code Playgroud)