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 ...
随机推荐
- 在查询用户的权限的时候 使用左外连接 和 access数据库中左外连接
一般做视图最好是做成左外连接的.而其作用尤其在我们查询用户当前的权限时尤为明显,我们将 权限表即模块表放→角色权限表→角色表→用户角色表→用户表 就这样left outer join 连接起来,这样就 ...
- Linux学习之Makefile文件的编写
转自:http://goodcandle.cnblogs.com/archive/2006/03/30/278702.html 目的: 基本掌握了 make 的用法,能在Linux系统上编 ...
- WCF 接收、发送数据的大小及时间的设置
<system.serviceModel> <bindings> <basicHttpBinding> <binding name="/> & ...
- 如何创建一个简单的struts2程序
如何创建一个简单的Struts2程序 “计应134(实验班) 凌豪” 1.创建一个新的Web项目test(File->new->Web Project) 2.Struts2框架的核心配置文 ...
- fafu 1100 线段树
题目链接 单点更新, 区间查询. 这题空间好小.... #include <iostream> #include <vector> #include <cstdio> ...
- python练习之list
请用索引取出下面list的指定元素: # -*- coding: utf-8 -*- L = [ ['Apple', 'Google', 'Microsoft'], ['Java', 'Python' ...
- Common Git command and mean (Windows)
Config: git config --system git config --global git config --global merge.tool vimdiff Check config: ...
- iOS6与iOS7屏幕适配技巧
一.没有包装任何 导航控制器 或者 UITabBarController 1.控制器的view是UIScrollView\UITableView\UICollectionView时(控制器是UITab ...
- CreateFileMapping使用方法
CreateFileMapping的MSDN翻译和使用心得 測试创建和打开文件映射的时候老是得到"句柄无效"的错误, 细致看了MSDN以后才发觉是函数认识不透, 这里把相关的解 ...
- 如何写出专业级OOP程序-----文档注释
由于时间的限制就写一些通用的注释啦> @author 姓名 这个标记将产生一个作者条目,可以使用多个@author注释,每个对应一个作者. @version 文本 这个标记产生版本条目,对当前版 ...

