首页 文章

nexus-staging-maven-plugin在没有信息的情况下返回401

提问于
浏览
0

我正致力于在中央Maven资源库中将Anonimatron作为库提供 . 为了做到这一点,我按照the sonatype documentation中的文档 . 运行 mvn deploy 时,nexus staging插件给出了401错误,我无法弄清楚为什么,因为它没有告诉我发生了什么 .

我在oss.sonatype.org有一个工作帐户,我在那里创建了一个用户访问令牌 . 访问令牌存储在我的maven的 ~/.m2/settings.xml 的服务器部分中(因为原因删除了令牌):

<servers>
    <server>
        <id>ossrh</id>
        <username>USER_TOKEN</username>
        <password>USER_PASSPHRASE</password>
    </server>
</servers>

然后,在我的maven https://github.com/realrolfje/anonimatron/blob/feature/anonimatron-as-library/pom.xml文件中,我添加了nexus staging插件:

<distributionManagement>
    <snapshotRepository>
        <id>sonatype-snapshots</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
        <id>sonatype-release</id>
        <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
    </repository>
</distributionManagement>
[...]
<plugin>
    <groupId>org.sonatype.plugins</groupId>
    <artifactId>nexus-staging-maven-plugin</artifactId>
    <version>1.6.7</version>
    <extensions>true</extensions>
    <configuration>
        <serverId>ossrh</serverId>
        <nexusUrl>https://oss.sonatype.org/</nexusUrl>
        <autoReleaseAfterClose>true</autoReleaseAfterClose>
    </configuration>
</plugin>

当我运行 mvn deploy 时,我收到错误:

[错误]无法执行目标org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:在项目anonimatron上部署(inject-nexus-deploy):无法部署工件:无法传输工件com.rolfje .anonimatron:anonimatron:jar:javadoc:1.9.3-20180512.204932-1 from / to sonatype-snapshots(https://oss.sonatype.org/content/repositories/snapshots):无法传输文件:https:// oss .sonatype.org /内容/库/快照/ COM / rolfje / anonimatron / anonimatron / 1.9.3-SNAPSHOT / anonimatron-1.9.3-20180512.204932-1-javadoc.jar . 返回码为:401,ReasonPhrase:未经授权 . - > [帮助1]

要检查我的令牌确实有效,我尝试使用curl上传:

curl -u USER_TOKEN:USER_PASSPHRASE \
https://oss.sonatype.org/content/repositories/snapshots/com/rolfje/anonimatron/anonimatron/1.9.3-SNAPSHOT/anonimatron-1.9.3-20180512.093802-1-javadoc.jar \
--request PUT --data target/anonimatron-1.9.3-SNAPSHOT.jar

这成功了,我可以看到上传的jar出现在Nexus Repository Manager中 .

我执行了与this question相同的步骤,但由于我还没有上传任何内容,版本号不能碰撞,尽管我最后做了手动javadoc上传 . 由于这是一个快照,并且它有效,我认为我的问题在于nexus-staging-maven-plugin .

我正在寻找的是一种调试nexus-staging-maven-plugin的方法,以便我知道它失败的原因 . 它没有告诉我它正在使用哪些凭据,它是从settings.xml文件中加载的凭据,以及它采取的确切步骤,即使我使用-e和-X标志运行mvn .

2 回答

  • 0

    正如@khmarbaise所提到的,使用标准maven-deploy插件执行部署似乎确实有效 . 作为问题OSSRH-39766OSSRH-39777的一部分,我向sonatype报告了这个问题 .

    Joel重新生成了我的权限,现在nexus发布插件似乎正在运行 . 请注意,这也可能是由maven-deploy引起的,这可能会“引发”某些东西 .

    总而言之,nexus发布插件可以对日志记录进行一些改进,特别是:

    • 用于执行步骤的配置文件

    • 正在执行的步骤(确切)

    • 如果有401,请告诉使用哪个用户标识执行该步骤以及从哪个环境获取(命令行,settings.xml等) .

    我看到有些人正在努力使用nexus插件,而插件实际上应该让生活更轻松 .

    感谢SonaType快速有效的回复!

  • 0

    在〜/ .m2 / settings.xml文件中添加以下内容:

    <servers>
        <server>
            <id>ossrh</id>
            <username>{YOUR_JIRA_USERNAME}</username>
            <password>{YOUR_JIRA_PASSWORD}</password>
        </server>
    </servers>
    

    另外,更新你的pom.xml:

    <distributionManagement>
            <snapshotRepository>
                <id>ossrh</id>
                <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            </snapshotRepository>
            <repository>
                <id>ossrh</id>
                <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
            </repository>
    </distributionManagement>
    
    • Make sure repository id and server id matches. 在此示例中,id为"ossrh" .

    • Also, note that the username and password should be same as your jira login . 那就是 mvn clean deploy 现在将你的jar上传到sonatype repoditory . 快乐部署!!

相关问题