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

时间:2012-10-03 22:52:58

标签: maven

在尝试将版本推送到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:

1 个答案:

答案 0 :(得分:7)

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

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

  • mvn release:prepare
  • mvn release:执行

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

  1. 检入项目的所有更改。如果有任何未经妥协的本地更改,Maven会抱怨。
  2. 确保您拥有SSH public key in git。这将修复或阻止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. 进行签名
  8. 现在按照https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-8a.ReleaseIt
  9. 上的说明发布

    这是〜/ .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>