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 ...
随机推荐
- android入门——UI(6)——ViewPager+Menu+PopupWindow
一.使用ViewPager开发新特性引导界面 <?xml version="1.0" encoding="utf-8"?> <Relative ...
- hibernate 及缓存机制
hibernate 是一个持久层的框架,经常访问物理数据库,为了降低应用程序访问物理数据库的频次, 从而提升性能, hibernate缓存机制分为: 一类是session 级缓存,二是sessionF ...
- hibernate sql查询后对象转换成实体类
在多表查询的时候使用hibernate的sql查询的时候,一般返回的是object[]数组,或者可以使用 session.createSQLQuery(sql).setResultTransform ...
- C - Wooden Sticks
C - Wooden Sticks Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- WebApi服务
WCF 它利用TCP.HTTP.MSMQ等传输协议构建“契约先行”的服务.WCF最初为基于SOAP的服务而设计[xml],繁琐.冗余.慢.沉重 WebApi 基于http协议,轻量级的,支持URL路由 ...
- C#学习日志 day 1 ------ hello C# !
首先是C#的编译器的安装.这里用vs2013.我用的是Windows 8.1系统,所以安装起来并不难. 双击vs_ultimate.exe 逐步安装就好.这里用校园邮箱在dream spark 上进行 ...
- maven 常用命令及操作(转)
Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1. 创建Maven的普通 ...
- finally块的问题(finally block does not complete normally) (转)
当finall块中包含return语句时,Eclipse会给出警告“finally block does not complete normally”,原因分析如下: 1.不管try块.catch块中 ...
- cocos2d-x 多点触控实现缩放及相关问题的解决方法
首先,来看下代码: 声明文件: #ifndef __loading__MoreTouches__ #define __loading__MoreTouches__ #include <iostr ...
- Linux操作系统定时任务系统Cron入门、PHP计划任务以及rpc示例
一.简单介绍 1.cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动.关闭这个服务: servic ...

