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:
--------------------------------------------------------------------- maven-metadata-10-SNAPSHOT.xml (907 bytes) Download Attachment maven-metadata-11-SNAPSHOT.xml (907 bytes) Download Attachment maven-metadata-artifact.xml (587 bytes) Download 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 ...
随机推荐
- gulp使用心得
本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp.不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情.那就直接开始吧. 第一步 ...
- JMS详细的工作原理【转】
如果手机只能进行实时通话,没有留言和短信功能会怎么样?一个电话打过来,正好没有来得及接上,那么这个电话要传递的信息肯定就收不到了.为什么不能先将信息存下来,当用户需要查看信息的时候再去获得信息呢?伴随 ...
- This project references NuGet package(s) that are missing on this computer.
Install Nuget. Right click on the solution and select "Enable NuGet Package Restore". Clic ...
- UITableViewCell的4种样式
转自http://blog.csdn.net/crazyzhang1990/article/details/12503163 1.UITableViewCellStyleDefault: Defaul ...
- 创建oracle数据库的表空间、用户、目录、导入\导出文件等信息
1.创建表空间 create tablespace ts_aw logging datafile 'd:\app\Administrator\product\tablespace\ts_aw.dbf' ...
- Spring Jdbc使用like模糊查询
public List<WfConfigMVO> queryList(WfConfigMVO wfConfig) throws SysException { StringBuffer sq ...
- if最简单的用法
/* Name:if最简单的用法-1 Copyright:By.不懂网络 Author: Yangbin Date:2014年2月9日 03:00:58 Description:if最简单的用法,真则 ...
- MySQL 二进制日志过滤
binlog_do_db; binlog_ignore_db; 这个两个参数是用来控制对哪个数据库的更改要记录日志:下面以binlog_ignore_db为例子. 假如binlog_ignore_db ...
- .NET(C#):觉察XML反序列化中的未知节点
原文 www.cnblogs.com/mgen/archive/2011/12/12/2284554.html 众所周知XML是可以扩展的,XML的元素可以靠名称识别而不是只按照未知识别.在 XML反 ...
- POJ 3294 Life Forms(后缀数组+二分答案)
[题目链接] http://poj.org/problem?id=3294 [题目大意] 求出在至少在一半字符串中出现的最长子串. 如果有多个符合的答案,请按照字典序输出. [题解] 将所有的字符串通 ...