java - 如何将jar发布到Nexus(快照存储库)?

标签 java maven jenkins gradle nexus

我想要实现的目标

我想将 jar 发布到 Nexus 快照存储库。

如果你知道如何实现,我想知道。

详细信息

我计划使用 Gradle 将 Java 项目 Artifact (jar) 从 Jenkins Pipeline 发布到 Nexus3 Artifact 存储库。 (但是根据要求 我无法使用 maven-publish 插件来build.gradle。使用 maven-publish 作为gradlepublish,我确认我可以发布到快照存储库)

我将从 Jenkins 作业发布 jar。

我想发布到快照存储库,但我无法调查/实现各种事情。

调查/确认

根据我的研究,似乎已经有以下 Jenkins 插件

但是,这两个插件似乎都不支持发布到快照存储库。 (我尝试了一段时间,但出现错误)

此外,不允许使用 curl 在 JenkinsPipeline 脚本中调用 API,如下所示:

        sh "curl -v -u admin:admin123 \
            -X POST http://localhost:8081/service/rest/v1/components?repository=maven=snapshots \
            -F maven2.groupId=${groupId} \
            -F maven2.artifactId=${artifactId} \
            -F maven2.version=${version} \
            -F maven2.asset1=build/libs/${artifactId}-${version}.jar \
            -F maven2.asset1.extension=jar \
            -F maven2.asset2=build/libs/${artifactId}-${version}.jar \
            -F maven2.asset2.classifier=javadoc \
            -F maven2.asset2.extension=jar \
            -F maven2.asset3=build/libs/${artifactId}-${version}.jar \
            -F maven2.asset3.classifier=sources \
            -F maven2.asset3.extension=jar"
        }

https://support.sonatype.com/hc/en-us/articles/115006744008-How-can-I-programmatically-upload-files-into-Nexus-3-

curl时的错误信息如下。

* Server auth using Basic with user 'admin'
> POST /service/rest/v1/components?repository=maven-snapshots HTTP/1.1

> Host: localhost:8081

> Authorization: Basic YWRtaW46YWRtaW4xMjM=

> User-Agent: curl/7.55.1

> Accept: */*

> Content-Length: 1379

> Expect: 100-continue

> Content-Type: multipart/form-data; boundary=------------------------bea51339dc9456fe

> 

< HTTP/1.1 100 Continue

} [1379 bytes data]
< HTTP/1.1 400 Bad Request

< Date: Sat, 13 Jul 2019 11:18:22 GMT

< Server: Nexus/3.17.0-01 (OSS)

< X-Content-Type-Options: nosniff

< Vary: Accept

< Content-Type: application/vnd.siesta-validation-errors-v1+json

< X-Siesta-FaultId: 2281dcfa-6583-456a-9970-318d54dd431b

< Content-Length: 93

* HTTP error before end of send, stop sending
< 

{ [93 bytes data]

100  1472  100    93  100  1379     93   1379  0:00:01 --:--:--  0:00:01  2944
* Closing connection 0
[{"id":"*","message":"Upload to snapshot repositories not supported, use the maven client."}][Pipeline] error

谢谢。

最佳答案

我也遇到这个问题了。对我有用的是确保版本号末尾有“-SNAPSHOT”,如下所示:“com.ex.example-1.0.3-SNAPSHOT”您无法将非快照 Artifact 发布到快照存储库Nexus,发布存储库也是如此。

关于java - 如何将jar发布到Nexus(快照存储库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57019491/

相关文章:

Maven 错误构建失败

java - 使用 Maven 构建的独立 Java 程序的打包

java - GMaven 构建失败并显示 "An API incompatibility was encountered"

Jenkins - 需要 JENKINS_HOME 但缺少 systemInfo 的整体/管理权限

JavaFX应用程序不在浏览器上运行,它抛出错误?

java - java.io.File 的路径问题

java - 同时根据两个参数进行集合排序

java - 如何访问用户的登录用户名并将其存储在常规 java 类中使用的变量中

git - 如何让 Jenkins 将 Git merge 提交视为更改?

docker - 从Jenkins Docker容器中旋转Docker/ECS容器