我正在努力将Anonimatron作为中心Maven资源库中的库提供。为此,我按照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/content/repositories/snapshots/com/rolfje/anonimatron/anonimatron/1.9.3-SNAPSHOT/anonimatron-1.9.3-20180512.204932-1-javadoc.jar。返回码为:401,ReasonPhrase:未经授权。 - &GT; [帮助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。
答案 0 :(得分:0)
正如@khmarbaise所提到的,使用标准maven-deploy插件执行部署似乎确实有效。作为问题的一部分,我将这个问题报告给sonatype OSSRH-39766和OSSRH-39777。
Joel重新获得了我的权限,现在nexus发布插件似乎正在运行。请注意,这也可能是由maven-deploy引起的,这可能会“引发”某些内容。
总而言之,nexus发布插件可以对日志记录进行一些改进,特别是:
我看到有些人正在努力使用nexus插件,而插件实际上应该让生活更轻松。
感谢SonaType提供快速有效的回复!
答案 1 :(得分: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>
确保存储库ID和服务器ID匹配。 在此示例中,id为“ ossrh”。
此外,请注意,用户名和密码应与您的jira登录名相同。就是这样mvn clean deploy
现在将您的jar上载到声呐重复版。部署愉快!