Nexus 3 - 文件上传到托管的Maven存储库

Chr*_*ter 2 curl nexus sonatype

我想在Nexus OSS 3实例上将一些文件上传到新生成的托管Maven存储库.

我需要使用curl(不是maven或其他东西)进行上传.

我尝试了以下语句(端口不是必需的 - 我有一个NginX作为反向代理)

curl -v -F r=releases -F hasPom=false -F e=jar -F g=com.my.group -F a=myArtifact -F v=1.0.0-RC1 -F p=jar --upload-file "myArtifact.jar" -u user:password123 http://myNexusInstance.com/repository/myRepository
Run Code Online (Sandbox Code Playgroud)

此命令生成以下错误:

* Server auth using Basic with user 'user'
PUT /repository/myRepository HTTP/1.1
Host: myNexusInstance.com
Authorization: Basic xxxx=
User-Agent: curl/7.49.1
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue
HTTP/1.1 100 Continue
} [16380 bytes data]
HTTP/1.1 400 Invalid path for a Maven 2 repository
Run Code Online (Sandbox Code Playgroud)

我尝试使用谷歌搜索但没有找到任何解决方案(在Nexus OSS 3.x文档和其他论坛中都没有)

Nexus存储库使用以下配置值进行设置:

  • 格式:maven2
  • 类型:托管
  • 版本政策:发布
  • 布局政策:严格
  • 部署策略:允许重新部署(也测试"禁用重新部署")

这有什么不对?

Dar*_*ter 6

您无法使用Nexus Repository 3中的服务URL.要执行类似于您尝试执行的操作,请尝试以下操作:

curl -v -u admin:admin123 --upload-file myArtifact.jar http://nexusURL:nexusPORT/repository/myRepository/com/my/group/myArtifact/1.0.0-RC1/myArtifact-1.0.0-RC1.jar

这应该够了吧?

对于一些好的阅读,您可以查看以下链接来解释远程存储库布局(并希望有助于解释我建议的工作原理):

https://cwiki.apache.org/confluence/display/MAVEN/Remote+repository+layout#Remoterepositorylayout-Repositoryartifactlayout

  • 使用curl命令,您必须知道文件名**(myArtifact-1.0.0-RC1)**必须等于存储库路径最后部分的串联**(myArtifact/1.0.0-RC1 )**.`curl -v -u admin:admin123 --upload-file myArtifact.jar http:// nexusURL:nexusPORT/repository/myRepository/com/my/group/myArtifact/1.0.0-RC1/myArtifact-1.0.0-RC1 .jar` (2认同)