nexus REST API /artifact/maven/[resolve|redirect] returns unexpected for v=LATEST
|
Novice nexus oss (2.0.0) user here – getting unexpected results when requesting v=LATEST artifact from our hosted repo. I am hoping someone could explain what is wrong with our maven-metadata.xml (or my expectations of what v=LATEST returns). We have an Why? What inputs (from maven-metadata.xml at /group/artifact/maven-metadata.xml) does API evaluate to arrive at 10-SNAPSHOT. API responses below; attached are maven-metadata.xml files for: 1) 10-SNAPSHOT 2) 11-SNAPSHOT 3) artifact Notice that in artifact’s maven-metadata.xml lastUpdated matches the timestamp of 11-SNAPSHOT. From reading Nexus FAQ, my understanding is that versioning/latest attribute in that file is irrelevant since this is a non-plugin artifact. Thank you, -nikita Asking /resolve for ‘v=LATEST’: $curl –uxxx:xxx -i "http://host/nexus/service/local/artifact/maven/resolve?g=com.castanealabs&a=castanealabs-config&v=LATEST&r=snapshots" HTTP/1.1 200 OK Date: Tue, 20 Mar 2012 22:08:19 GMT Set-Cookie: rememberMe=deleteMe; Path=/nexus; Max-Age=0; Expires=Mon, 19-Mar-2012 22:08:19 GMT Content-Type: application/xml; charset=UTF-8 Date: Tue, 20 Mar 2012 22:08:19 GMT Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept Server: Noelios-Restlet-Engine/1.1.6-SONATYPE-5348-V4 Content-Length: 638 <artifact-resolution> <data> <presentLocally>true</presentLocally> <groupId>com.castanealabs</groupId> <artifactId>castanealabs-config</artifactId> <version>10-20120320.074835-5</version> <baseVersion>10-SNAPSHOT</baseVersion> <extension>jar</extension> <snapshot>true</snapshot> <snapshotBuildNumber>5</snapshotBuildNumber> <snapshotTimeStamp>1332229715000</snapshotTimeStamp> <sha1>f107b5dd710dc3dbac8029ecb3f394b265e7c078</sha1> <repositoryPath>/com/castanealabs/castanealabs-config/10-SNAPSHOT/castanealabs-config-10-20120320.074835-5.jar</repositoryPath> </data> </artifact-resolution> Now ask for 11-SNAPSHOT explicitly – notice more recent <version/>: $curl –uxxx:xxx -i "http://host/nexus/service/local/artifact/maven/resolve?g=com.castanealabs&a=castanealabs-config&v=11-SNAPSHOT&r=snapshots" HTTP/1.1 200 OK Date: Tue, 20 Mar 2012 22:12:48 GMT Set-Cookie: rememberMe=deleteMe; Path=/nexus; Max-Age=0; Expires=Mon, 19-Mar-2012 22:12:48 GMT Content-Type: application/xml; charset=UTF-8 Date: Tue, 20 Mar 2012 22:12:48 GMT Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept Server: Noelios-Restlet-Engine/1.1.6-SONATYPE-5348-V4 Content-Length: 638 <artifact-resolution> <data> <presentLocally>true</presentLocally> <groupId>com.castanealabs</groupId> <artifactId>castanealabs-config</artifactId> <version>11-20120320.181629-2</version> <baseVersion>11-SNAPSHOT</baseVersion> <extension>jar</extension> <snapshot>true</snapshot> <snapshotBuildNumber>2</snapshotBuildNumber> <snapshotTimeStamp>1332267389000</snapshotTimeStamp> <sha1>d90c05740d587ae57fddd2318fc40258104283e2</sha1> <repositoryPath>/com/castanealabs/castanealabs-config/11-SNAPSHOT/castanealabs-config-11-20120320.181629-2.jar</repositoryPath> </data> </artifact-resolution> Maven-metadata.xml at /group/artifact/ level:
--------------------------------------------------------------------- Attachment Attachment Attachment |
RE: nexus REST API /artifact/maven/[resolve|redirect] returns unexpected for v=LATEST
|
Update: I observed the following: · Running ‘rebuild metadata’ on repository from nexus UI fixes the problem – specifically API responds to v=LATEST with newest version (11-SNAPSHOT in the case below) · The only change to maven-metadata.xml from the above is: <latest/> updated from 10-SNAPSHOT to 11-SNAPSHOT. So ‘latest’ does matter for non-plugin artifacts – contrary · The cycle repeats, however – after newer 12-SNAPSHOT is published, maven-metadata.xml still lists 11-SNAPSHOT as <latest/> (albeit listing lastUpdated matching 12-SNAPSHOT) So, seems like one of the following must be true: 1) Mvn deploy uploads incorrect maven-metadata.xml (and <latest/> does matter) a. I ran mvn deploy against a local file repo, and the resulting maven-metadata.xml did not have <latest/> property at all (using mvn 3.0.4 and maven-deploy-plugin 2.7) 2) Nexus does something to maven-metadata.xml on upload and the resulting file has wrong <latest/> 3) <latest/> is indeed irrelevant and Nexus REST API returns wrong version for some other reason (can Nexus API be caching a response?) From: Nikita Tovstoles [mailto:[hidden email]] Novice nexus oss (2.0.0) user here – getting unexpected results when requesting v=LATEST artifact from our hosted repo. I am hoping someone could explain what is wrong with our maven-metadata.xml (or my expectations of what v=LATEST returns). We have an Why? What inputs (from maven-metadata.xml at /group/artifact/maven-metadata.xml) does API evaluate to arrive at 10-SNAPSHOT. API responses below; attached are maven-metadata.xml files for: 1) 10-SNAPSHOT 2) 11-SNAPSHOT 3) artifact Notice that in artifact’s maven-metadata.xml lastUpdated matches the timestamp of 11-SNAPSHOT. From reading Nexus FAQ, my understanding is that versioning/latest attribute in that file is irrelevant since this is a non-plugin artifact. Thank you, -nikita Asking /resolve for ‘v=LATEST’: $curl –uxxx:xxx -i "http://host/nexus/service/local/artifact/maven/resolve?g=com.castanealabs&a=castanealabs-config&v=LATEST&r=snapshots" HTTP/1.1 200 OK Date: Tue, 20 Mar 2012 22:08:19 GMT Set-Cookie: rememberMe=deleteMe; Path=/nexus; Max-Age=0; Expires=Mon, 19-Mar-2012 22:08:19 GMT Content-Type: application/xml; charset=UTF-8 Date: Tue, 20 Mar 2012 22:08:19 GMT Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept Server: Noelios-Restlet-Engine/1.1.6-SONATYPE-5348-V4 Content-Length: 638 <artifact-resolution> <data> <presentLocally>true</presentLocally> <groupId>com.castanealabs</groupId> <artifactId>castanealabs-config</artifactId> <version>10-20120320.074835-5</version> <baseVersion>10-SNAPSHOT</baseVersion> <extension>jar</extension> <snapshot>true</snapshot> <snapshotBuildNumber>5</snapshotBuildNumber> <snapshotTimeStamp>1332229715000</snapshotTimeStamp> <sha1>f107b5dd710dc3dbac8029ecb3f394b265e7c078</sha1> <repositoryPath>/com/castanealabs/castanealabs-config/10-SNAPSHOT/castanealabs-config-10-20120320.074835-5.jar</repositoryPath> </data> </artifact-resolution> Now ask for 11-SNAPSHOT explicitly – notice more recent <version/>: $curl –uxxx:xxx -i "http://host/nexus/service/local/artifact/maven/resolve?g=com.castanealabs&a=castanealabs-config&v=11-SNAPSHOT&r=snapshots" HTTP/1.1 200 OK Date: Tue, 20 Mar 2012 22:12:48 GMT Set-Cookie: rememberMe=deleteMe; Path=/nexus; Max-Age=0; Expires=Mon, 19-Mar-2012 22:12:48 GMT Content-Type: application/xml; charset=UTF-8 Date: Tue, 20 Mar 2012 22:12:48 GMT Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept Server: Noelios-Restlet-Engine/1.1.6-SONATYPE-5348-V4 Content-Length: 638 <artifact-resolution> <data> <presentLocally>true</presentLocally> <groupId>com.castanealabs</groupId> <artifactId>castanealabs-config</artifactId> <version>11-20120320.181629-2</version> <baseVersion>11-SNAPSHOT</baseVersion> <extension>jar</extension> <snapshot>true</snapshot> <snapshotBuildNumber>2</snapshotBuildNumber> <snapshotTimeStamp>1332267389000</snapshotTimeStamp> <sha1>d90c05740d587ae57fddd2318fc40258104283e2</sha1> <repositoryPath>/com/castanealabs/castanealabs-config/11-SNAPSHOT/castanealabs-config-11-20120320.181629-2.jar</repositoryPath> </data> </artifact-resolution> Maven-metadata.xml at /group/artifact/ level:
|
Re: nexus REST API /artifact/maven/[resolve|redirect] returns unexpected for v=LATEST
|
<base href="x-msg://11/">
On 22 Mar 2012, at 11:48, Nikita Tovstoles wrote:
Nexus only modifies the Maven metadata for a given repository when you explicitly ask to rebuild it, otherwise it is left to Maven to update.
However, Maven no longer updates the LATEST tag on deploy, see http://jira.codehaus.org/browse/MDEPLOY-103 and its linked issues.
|
RE: nexus REST API /artifact/maven/[resolve|redirect] returns unexpected for v=LATEST
|
<base href="x-msg://11/">
Thanks for the tip, Stuart. I think I understand what’s happening but do have a “am I ”: 1) I see that artifact maven-metadata.xml, generated by deploy goal (Mvn 3.0.4 and maven-deploy-plugin 2.7) does NOT contain <latest/> property at all – and understand that 2) Running “rebuild metadata” task in Nexus OSS 2.0.0 generates maven-metadata.xml with <latest/> property set 3) Subsequent ‘maven deploy’ uploads do NOT alter <latest/> field (perhaps because mvn does not expect it to be present – since it’s not generated in #1) From the above, a catch-22 situation: if one ever runs ‘rebuild metadata’ task in Nexus, <latest/> property is introduced (by Nexus) - but is never subsequently updated by ‘mvn deploy’. So, it seems, either one must: 2) one must always trigger that task every time a different version of SNAPSHOT artifact is uploaded via ‘mvn deploy’ (to keep <latest/> property updated) I suppose I can achieve #2 via post-deploy call to nexus API, but is the above really by design? If not, which party (maven-deploy-plugin or Nexus ‘rebuild metadata’) should be behaving differently? Or am I missing something Thank you, -nikita From: Stuart McCulloch [mailto:[hidden email]] On 22 Mar 2012, at 11:48, Nikita Tovstoles wrote: Update: I observed the following: · Running ‘rebuild metadata’ on repository from nexus UI fixes the problem – specifically API responds to v=LATEST with newest · The only change to maven-metadata.xml from the above is: <latest/> updated from 10-SNAPSHOT to 11-SNAPSHOT. So ‘latest’ does · The cycle repeats, however – after newer 12-SNAPSHOT is published, maven-metadata.xml still lists 11-SNAPSHOT as <latest/> (albeit So, seems like one of the following must be true: 1) Mvn deploy uploads incorrect maven-metadata.xml (and <latest/> does matter) a. I ran mvn deploy against a local file repo, and the resulting maven-metadata.xml did not have <latest/> property at all (using 2) Nexus does something to maven-metadata.xml on upload and the resulting file has wrong <latest/> 3) <latest/> is indeed irrelevant and Nexus REST API returns wrong version for some other reason (can Nexus API be caching a response?) Nexus only modifies the Maven metadata for a given repository when you explicitly ask to rebuild it, otherwise it is left to Maven to update. However, Maven no longer updates the LATEST tag on deploy, see http://jira.codehaus.org/browse/MDEPLOY-103 and its linked issues. From: Nikita Tovstoles [hidden email] Novice nexus oss (2.0.0) user here – getting unexpected results when requesting v=LATEST artifact from our hosted repo. I am hoping someone could explain what is wrong with our maven-metadata.xml (or my expectations of what v=LATEST returns). We have an Why? What inputs (from maven-metadata.xml at /group/artifact/maven-metadata.xml) does API evaluate to arrive at 10-SNAPSHOT. API responses below; attached are maven-metadata.xml files for: 1) 10-SNAPSHOT 2) 11-SNAPSHOT 3) artifact Notice that in artifact’s maven-metadata.xml lastUpdated matches the timestamp of 11-SNAPSHOT. From reading Nexus FAQ, my understanding is that versioning/latest attribute in that file is irrelevant since this is a non-plugin artifact. Thank you, -nikita Asking /resolve for ‘v=LATEST’: $curl –uxxx:xxx -i "http://host/nexus/service/local/artifact/maven/resolve?g=com.castanealabs&a=castanealabs-config&v=LATEST&r=snapshots" HTTP/1.1 200 OK Date: Tue, 20 Mar 2012 22:08:19 GMT Set-Cookie: rememberMe=deleteMe; Path=/nexus; Max-Age=0; Expires=Mon, 19-Mar-2012 22:08:19 GMT Content-Type: application/xml; charset=UTF-8 Date: Tue, 20 Mar 2012 22:08:19 GMT Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept Server: Noelios-Restlet-Engine/1.1.6-SONATYPE-5348-V4 Content-Length: 638 <artifact-resolution> <data> <presentLocally>true</presentLocally> <groupId>com.castanealabs</groupId> <artifactId>castanealabs-config</artifactId> <version>10-20120320.074835-5</version> <baseVersion>10-SNAPSHOT</baseVersion> <extension>jar</extension> <snapshot>true</snapshot> <snapshotBuildNumber>5</snapshotBuildNumber> <snapshotTimeStamp>1332229715000</snapshotTimeStamp> <sha1>f107b5dd710dc3dbac8029ecb3f394b265e7c078</sha1> <repositoryPath>/com/castanealabs/castanealabs-config/10-SNAPSHOT/castanealabs-config-10-20120320.074835-5.jar</repositoryPath> </data> </artifact-resolution> Now ask for 11-SNAPSHOT explicitly – notice more recent <version/>: $curl –uxxx:xxx -i "http://host/nexus/service/local/artifact/maven/resolve?g=com.castanealabs&a=castanealabs-config&v=11-SNAPSHOT&r=snapshots" HTTP/1.1 200 OK Date: Tue, 20 Mar 2012 22:12:48 GMT Set-Cookie: rememberMe=deleteMe; Path=/nexus; Max-Age=0; Expires=Mon, 19-Mar-2012 22:12:48 GMT Content-Type: application/xml; charset=UTF-8 Date: Tue, 20 Mar 2012 22:12:48 GMT Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept Server: Noelios-Restlet-Engine/1.1.6-SONATYPE-5348-V4 Content-Length: 638 <artifact-resolution> <data> <presentLocally>true</presentLocally> <groupId>com.castanealabs</groupId> <artifactId>castanealabs-config</artifactId> <version>11-20120320.181629-2</version> <baseVersion>11-SNAPSHOT</baseVersion> <extension>jar</extension> <snapshot>true</snapshot> <snapshotBuildNumber>2</snapshotBuildNumber> <snapshotTimeStamp>1332267389000</snapshotTimeStamp> <sha1>d90c05740d587ae57fddd2318fc40258104283e2</sha1> <repositoryPath>/com/castanealabs/castanealabs-config/11-SNAPSHOT/castanealabs-config-11-20120320.181629-2.jar</repositoryPath> </data> </artifact-resolution> Maven-metadata.xml at /group/artifact/ level:
|
Re: nexus REST API /artifact/maven/[resolve|redirect] returns unexpected for v=LATEST
|
<base href="x-msg://11/">With regards to your rebuilding metadata... you really shouldn't run this unless you have a good reason to. Maven is responsible for maintaining the metadata files, rebuilding them should be thought of as
a "repair" operation. Regarding Nexus setting "latest" after metadata rebuild, are these timestamped snapshots, or non-timestamped snapshots?
Rich
On Mar 22, 2012, at 5:52 PM, Nikita Tovstoles wrote:
|
nexus REST API /artifact/maven/[resolve|redirect] returns unexpected for v=LATEST的更多相关文章
- Nexus 私有仓库搭建与 Maven 集成
Nexus 私有仓库搭建与 Maven 集成 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和 ...
- 用nexus搭建自己的maven私有仓库
用nexus搭建自己的maven私有仓库 刚安装nexus时,nexus启动失败,启动不到1分钟,自动停止.后来查找到了原因: Java 6 Support EOLOracle's support ...
- org.gradle.api.publication.maven.internal.DefaultMavenFactory错误
Error:Unable to load class 'org.gradle.api.publication.maven.internal.DefaultMavenFactory'. Possible ...
- nexus 配置文件到本地maven本地仓库 失败
Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on p ...
- Maven错误Failed to read artifact descriptor for xxx:jar 和 missing artifact maven dependency
可参考:http://stackoverflow.com/questions/6111408/maven2-missing-artifact-but-jars-are-in-place http:// ...
- Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory 解决办法
当你使用的Gradle版本是2.4以上,Android插件版本是1.3.0以上的时候就会出现这个问题,这时候你只需将android-maven-gradle-plugin插件版本改为classpath ...
- Maven实战(十)利用 Nexus 来构建企业级 Maven 仓库
目录 一.简介 Nexus是Maven仓库管理器,用来搭建一个本地仓库服务器,这样做的好处是便于管理,节省网络资源,速度快,还有一个非常有用的功能就是可以通过项目的SNAPSHOT版本管理,来进行模块 ...
- nexus 的使用及maven的配置
一.nexus的安装 1.下载nexus(点解这里) 2.下载后解压文件,将解压后的nexus文件放在你自己想要的地方 3.配置环境变量(和配置java的环境变量一样) 4.安装和启动nexus 由于 ...
- nexus私服搭建及maven生命周期
一.maven找库流程 从流程上看创建nexus私服,能够优化流程,而且更加快速 二.nexus下载.安装 1.nexus下载地址 https://sonatype-download.global.s ...
随机推荐
- SQL学习之SELECT子句顺序
下面来总计下之前的随笔中所说过的所有的SELECT子句的顺序. 子句 说明 是否必须使用 SELECT 要返回的列或者表达式 ...
- 全球最快的JS模板引擎
废话不多说,先上测试: 亲测请访问:[在线测试地址]单次结果不一定准确,请多测几次. tppl 的编译渲染速度是著名的 jQuery 作者 John Resig 开发的 tmpl 的 43 倍!与第二 ...
- English - allow to do 与 allow doing 的区别
英语中并没有allow to do sth这种结构,只有allow doing sth 及allow sb to do sth这两个结构. 你这样记忆可能方便一些: 1. 在主动语态中,如果allow ...
- .net string format
转自:http://www.cnblogs.com/jobs2/p/3948049.html 转自:http://jingyan.baidu.com/article/48206aeaf8c52f216 ...
- Eclipse\MyEclipse 安装tomcat插件后,还需要配置Tomcat Home
Eclipse 安装tomcat插件后,配置Tomcat Home的步骤如下: MyEclipse 安装tomcat插件后,配置Tomcat Home的步骤如下:
- 对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
在程序中调用C++链接库中的回调函由于没有考虑生命周期,直接写委托回随机的被gc给回收掉导致报这个错误 错误的程序: private void InitPlateIdentify() { try { ...
- nginx proxy_pass 后面的斜杠
# add / location /app/ { proxy_pass http://$backend/; } # location /app/ { proxy_pass http://$backen ...
- leetcode add two numbers python
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = ...
- mina、netty消息边界问题(采用换行符)
在TCP连接开始到结束连接,之间可能会多次传输数据,也就是服务器和客户端之间可能会在连接过程中互相传输多条消息.理想状况是一方每发送一条消息,另一方就立即接收到一条,也就是一次write对应一次rea ...
- Struts2知识总结
整篇参考:http://blog.csdn.net/zq9017197/article/details/5958627 要搞清楚以下几点: 1.Struts2是什么?它的运行原理是什么? 2.Stru ...

