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
non-plugin JAR artifact “castanealabs-config” in Snapshots repo (published via maven-deploy-plugin, fwiw). The two most recent versions are 10-SNAPSHOT and 11-SNAPSHOT. The latter was published most recently (and has the highest version by maven convention,
as I understand it). Yet Nexus REST API (/artifact/maven/{resolve,redirect}) keeps returning most recent snapshot of 10-SNAPSHOT instead when asked for v=LATEST.

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:

<?xml version="1.0" encoding="UTF-8"?>

<metadata>

<groupId>com.castanealabs</groupId>

<artifactId>castanealabs-config</artifactId>

<versioning>

<latest>10-SNAPSHOT</latest>

<release></release>

<versions>

<version>1.0-SNAPSHOT</version>

<version>7-SNAPSHOT</version>

<version>8-SNAPSHOT</version>

<version>10-SNAPSHOT</version>

<version>11-SNAPSHOT</version>

</versions>

<lastUpdated>20120320181629</lastUpdated>

</versioning>

</metadata>

--------------------------------------------------------------------- 

To unsubscribe, e-mail: [hidden email] 

For additional commands, e-mail: [hidden email]



 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
Reply | Threaded |   

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
to the FAQ (http://bit.ly/GEurFo )?

·         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)
and Nexus API responds with 11-SNAPSHOT when asked for ‘v=LATEST’

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]

Sent: Tuesday, March 20, 2012 5:25 PM

To: [hidden email]

Subject: [nexus-user] 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
non-plugin JAR artifact “castanealabs-config” in Snapshots repo (published via maven-deploy-plugin, fwiw). The two most recent versions are 10-SNAPSHOT and 11-SNAPSHOT. The latter was published most recently (and has the highest version by maven convention,
as I understand it). Yet Nexus REST API (/artifact/maven/{resolve,redirect}) keeps returning most recent snapshot of 10-SNAPSHOT instead when asked for v=LATEST.

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:

<?xml version="1.0" encoding="UTF-8"?>

<metadata>

<groupId>com.castanealabs</groupId>

<artifactId>castanealabs-config</artifactId>

<versioning>

<latest>10-SNAPSHOT</latest>

<release></release>

<versions>

<version>1.0-SNAPSHOT</version>

<version>7-SNAPSHOT</version>

<version>8-SNAPSHOT</version>

<version>10-SNAPSHOT</version>

<version>11-SNAPSHOT</version>

</versions>

<lastUpdated>20120320181629</lastUpdated>

</versioning>

</metadata>

Reply | Threaded |   

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:
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
to the FAQ (http://bit.ly/GEurFo )?
·         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)
and Nexus API responds with 11-SNAPSHOT when asked for ‘v=LATEST’
 
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?)
 

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 [mailto:[hidden email]

Sent: Tuesday, March 20, 2012 5:25 PM

To: [hidden email]

Subject: [nexus-user] 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
non-plugin JAR artifact “castanealabs-config” in Snapshots repo (published via maven-deploy-plugin, fwiw). The two most recent versions are 10-SNAPSHOT and 11-SNAPSHOT. The latter was published most recently (and has the highest version by maven convention,
as I understand it). Yet Nexus REST API (/artifact/maven/{resolve,redirect}) keeps returning most recent snapshot of 10-SNAPSHOT instead when asked for v=LATEST.
 
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’:
 
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/>:
 
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:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>com.castanealabs</groupId>
<artifactId>castanealabs-config</artifactId>
<versioning>
<latest>10-SNAPSHOT</latest>
<release></release>
<versions>
<version>1.0-SNAPSHOT</version>
<version>7-SNAPSHOT</version>
<version>8-SNAPSHOT</version>
<version>10-SNAPSHOT</version>
<version>11-SNAPSHOT</version>
</versions>
<lastUpdated>20120320181629</lastUpdated>
</versioning>
</metadata>
 
 
 
 

Reply | Threaded |   

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
the file is unaltered when uploaded to nexus repo. (I verified by running deploy goal against local file system snapshotRepository in distributionManagement)

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:

1) never run ‘rebuild metadata’ (to never set <latest/> property) OR

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
else?

Thank you,

-nikita

From: Stuart McCulloch [mailto:[hidden email]

Sent: Thursday, March 22, 2012 7:44 AM

To: [hidden email]

Subject: Re: [nexus-user] nexus REST API /artifact/maven/[resolve|redirect] returns unexpected for v=LATEST

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
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 to the FAQ (http://bit.ly/GEurFo )?

·         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) and Nexus API responds with 11-SNAPSHOT when asked for ‘v=LATEST’

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?)

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] 

Sent: Tuesday, March 20, 2012 5:25 PM

To: [hidden email]

Subject: [nexus-user] 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
non-plugin JAR artifact “castanealabs-config” in Snapshots repo (published via maven-deploy-plugin, fwiw). The two most recent versions are 10-SNAPSHOT and 11-SNAPSHOT. The latter was published most recently (and has the highest version by maven convention,
as I understand it). Yet Nexus REST API (/artifact/maven/{resolve,redirect}) keeps returning most recent snapshot of 10-SNAPSHOT instead when asked for v=LATEST.

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’:

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/>:

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:

<?xml version="1.0" encoding="UTF-8"?>

<metadata>

<groupId>com.castanealabs</groupId>

<artifactId>castanealabs-config</artifactId>

<versioning>

<latest>10-SNAPSHOT</latest>

<release></release>

<versions>

<version>1.0-SNAPSHOT</version>

<version>7-SNAPSHOT</version>

<version>8-SNAPSHOT</version>

<version>10-SNAPSHOT</version>

<version>11-SNAPSHOT</version>

</versions>

<lastUpdated>20120320181629</lastUpdated>

</versioning>

</metadata>

Reply | Threaded |   

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:
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 the file is unaltered when uploaded to nexus repo. (I verified by running deploy goal against local file system snapshotRepository in distributionManagement)
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:

1) never run ‘rebuild metadata’ (to never set <latest/> property) OR
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
else?
 
Thank you,
-nikita
 
From: Stuart McCulloch [mailto:[hidden email]

Sent: Thursday, March 22, 2012 7:44 AM

To: [hidden email]

Subject: Re: [nexus-user] nexus REST API /artifact/maven/[resolve|redirect] returns unexpected for v=LATEST
 
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
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 to the FAQ (http://bit.ly/GEurFo )?
·         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) and Nexus API responds with 11-SNAPSHOT when asked for ‘v=LATEST’
 
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?)
 
 
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] 

Sent: Tuesday, March 20, 2012 5:25 PM

To: [hidden email]

Subject: [nexus-user] 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
non-plugin JAR artifact “castanealabs-config” in Snapshots repo (published via maven-deploy-plugin, fwiw). The two most recent versions are 10-SNAPSHOT and 11-SNAPSHOT. The latter was published most recently (and has the highest version by maven convention,
as I understand it). Yet Nexus REST API (/artifact/maven/{resolve,redirect}) keeps returning most recent snapshot of 10-SNAPSHOT instead when asked for v=LATEST.
 
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’:
 
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

nexus REST API /artifact/maven/[resolve|redirect] returns unexpected for v=LATEST的更多相关文章

  1. Nexus 私有仓库搭建与 Maven 集成

    Nexus 私有仓库搭建与 Maven 集成 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和 ...

  2. 用nexus搭建自己的maven私有仓库

    用nexus搭建自己的maven私有仓库  刚安装nexus时,nexus启动失败,启动不到1分钟,自动停止.后来查找到了原因: Java 6 Support EOLOracle's support ...

  3. org.gradle.api.publication.maven.internal.DefaultMavenFactory错误

    Error:Unable to load class 'org.gradle.api.publication.maven.internal.DefaultMavenFactory'. Possible ...

  4. nexus 配置文件到本地maven本地仓库 失败

    Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on p ...

  5. 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:// ...

  6. Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory 解决办法

    当你使用的Gradle版本是2.4以上,Android插件版本是1.3.0以上的时候就会出现这个问题,这时候你只需将android-maven-gradle-plugin插件版本改为classpath ...

  7. Maven实战(十)利用 Nexus 来构建企业级 Maven 仓库

    目录 一.简介 Nexus是Maven仓库管理器,用来搭建一个本地仓库服务器,这样做的好处是便于管理,节省网络资源,速度快,还有一个非常有用的功能就是可以通过项目的SNAPSHOT版本管理,来进行模块 ...

  8. nexus 的使用及maven的配置

    一.nexus的安装 1.下载nexus(点解这里) 2.下载后解压文件,将解压后的nexus文件放在你自己想要的地方 3.配置环境变量(和配置java的环境变量一样) 4.安装和启动nexus 由于 ...

  9. nexus私服搭建及maven生命周期

    一.maven找库流程 从流程上看创建nexus私服,能够优化流程,而且更加快速 二.nexus下载.安装 1.nexus下载地址 https://sonatype-download.global.s ...

随机推荐

  1. SQL学习之SELECT子句顺序

    下面来总计下之前的随笔中所说过的所有的SELECT子句的顺序. 子句 说明 是否必须使用 SELECT                  要返回的列或者表达式                      ...

  2. 全球最快的JS模板引擎

    废话不多说,先上测试: 亲测请访问:[在线测试地址]单次结果不一定准确,请多测几次. tppl 的编译渲染速度是著名的 jQuery 作者 John Resig 开发的 tmpl 的 43 倍!与第二 ...

  3. English - allow to do 与 allow doing 的区别

    英语中并没有allow to do sth这种结构,只有allow doing sth 及allow sb to do sth这两个结构. 你这样记忆可能方便一些: 1. 在主动语态中,如果allow ...

  4. .net string format

    转自:http://www.cnblogs.com/jobs2/p/3948049.html 转自:http://jingyan.baidu.com/article/48206aeaf8c52f216 ...

  5. Eclipse\MyEclipse 安装tomcat插件后,还需要配置Tomcat Home

    Eclipse 安装tomcat插件后,配置Tomcat Home的步骤如下: MyEclipse 安装tomcat插件后,配置Tomcat Home的步骤如下:

  6. 对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。

    在程序中调用C++链接库中的回调函由于没有考虑生命周期,直接写委托回随机的被gc给回收掉导致报这个错误 错误的程序: private void InitPlateIdentify() { try { ...

  7. nginx proxy_pass 后面的斜杠

    # add / location /app/ { proxy_pass http://$backend/; } # location /app/ { proxy_pass http://$backen ...

  8. leetcode add two numbers python

    # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = ...

  9. mina、netty消息边界问题(采用换行符)

    在TCP连接开始到结束连接,之间可能会多次传输数据,也就是服务器和客户端之间可能会在连接过程中互相传输多条消息.理想状况是一方每发送一条消息,另一方就立即接收到一条,也就是一次write对应一次rea ...

  10. Struts2知识总结

    整篇参考:http://blog.csdn.net/zq9017197/article/details/5958627 要搞清楚以下几点: 1.Struts2是什么?它的运行原理是什么? 2.Stru ...