如何将 jar 发布到 Nexus(快照存储库)?
How to publish jar to Nexus(snapshot repository)?
我想达到的目标
我想将 jar 发布到 Nexus 快照存储库。
如果你知道怎么实现,我也想知道。
详情
我计划使用 Gradle 从 Jenkins 管道发布 Java 项目工件 (jar) 到 Nexus3 工件存储库。 (但按要求
我无法将 maven-publish
插件用于 build.gradle
。使用maven-publish
作为gradle publish
,我确认我可以发布到快照存储库)
我将从 Jenkins 作业中发布 jar。
我想发布到 快照存储库,但我无法调查/实施各种事情。
调查/确认
根据我的研究,似乎已经有以下Jenkins Plugin
不过,似乎这两个插件都不支持发布到快照库。 (我试了一段时间,报错)
此外,不允许使用 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"
}
卷曲时报错信息如下
* 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' 你不能 post 一个非快照工件到 Nexus 中的快照存储库,并且发布存储库也是如此。
我想达到的目标
我想将 jar 发布到 Nexus 快照存储库。
如果你知道怎么实现,我也想知道。
详情
我计划使用 Gradle 从 Jenkins 管道发布 Java 项目工件 (jar) 到 Nexus3 工件存储库。 (但按要求
我无法将 maven-publish
插件用于 build.gradle
。使用maven-publish
作为gradle publish
,我确认我可以发布到快照存储库)
我将从 Jenkins 作业中发布 jar。
我想发布到 快照存储库,但我无法调查/实施各种事情。
调查/确认
根据我的研究,似乎已经有以下Jenkins Plugin
不过,似乎这两个插件都不支持发布到快照库。 (我试了一段时间,报错)
此外,不允许使用 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"
}
卷曲时报错信息如下
* 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' 你不能 post 一个非快照工件到 Nexus 中的快照存储库,并且发布存储库也是如此。