Java 从Jersey/JAX-RS客户端将ZIP发布到Artifactory
我有一套要求,要求Jersey/JAX-RS客户机将ZIP文件发布到Artifactory上的repos。具体而言,我需要将ZIP发布到: 看起来Artifactory公开了一个: 因此,看起来我需要将Java 从Jersey/JAX-RS客户端将ZIP发布到Artifactory,java,rest,jersey,jax-rs,artifactory,Java,Rest,Jersey,Jax Rs,Artifactory,我有一套要求,要求Jersey/JAX-RS客户机将ZIP文件发布到Artifactory上的repos。具体而言,我需要将ZIP发布到: 看起来Artifactory公开了一个: 因此,看起来我需要将somelib-1.0.0.zip放在上面标识的URL中。我的建议如下: // Groovy pseudo-code for the PUT entity: class Publication { @JsonProperty String uri @JsonProper
somelib-1.0.0.zip
放在上面标识的URL中。我的建议如下:
// Groovy pseudo-code for the PUT entity:
class Publication {
@JsonProperty
String uri
@JsonProperty
String downloadUri
@JsonProperty
String repo
@JsonProperty
String path
@JsonProperty
Date created
@JsonProperty
String createdBy
@JsonProperty
Integer size
@JsonProperty
String mimeType
@JsonProperty
Map<String,String> checksums
@JsonProperty
Map<String,String> originalChecksums
}
放置实体
最重要的是,我不理解PUT
实体应该是什么。使用Jersey/JAX-RS风格的POJO,我可能会执行以下操作:
// Again, Groovy pseudo-code
Publication publication = getSomehow() // Ideally ZIP is read into portable format by this point
webResource.path("libs-release-local").path("ourorg").path("somelib").path("1.0.0").path("somelib-1.0.0.zip")
.type(MediaType.???).entity(publication).put(???)
但是,我仍然不知道如何/在哪里发送实际的ZIP文件。有一个path
字段,它似乎指定了二进制文件的本地(客户端)路径,但这只是一个字符串/引用,而不是要发布的实际二进制文件
另外,根据维基百科,ZIP媒体类型是application\ZIP
,但JAX-RS中没有这样的定义
这里有什么想法吗?基本授权很好。
你是实体,你不需要任何东西。您在文档中看到的JSON是PUT调用的结果。谢谢@JBaruch(+1)-但是,请求中怎么可能不需要PUT实体?否则我怎么发布ZIP?!?或者,@JBaruch,更好的是,它是最新的并且可以用于此?如果是这样的话,我将尽量避免重新发明轮子:-)再次感谢@JBaruch(+1),最后的问题:(1)有关于这个客户机的文档/示例用法/等等吗。?(2)Maven坐标是多少?我看到了,但它的版本(0.16)与我在Bintray(0.10)上看到的内容冲突…想法?再次感谢!使用示例最好显示在中。而且,最新版本是0.17。再次感谢@JBaruch(+1)所以
jfrog.artifactory工具:artifactoryjava客户端:0.17
for Maven/Gradle coords?这是jcenter吗?
Client client = Client.create();
WebResource resource = client.resource(BASE_URI);
client.addFilter(new HTTPBasicAuthFilter("deployuser", "12345")); // dummy credentials, obviously
// Again, Groovy pseudo-code
Publication publication = getSomehow() // Ideally ZIP is read into portable format by this point
webResource.path("libs-release-local").path("ourorg").path("somelib").path("1.0.0").path("somelib-1.0.0.zip")
.type(MediaType.???).entity(publication).put(???)