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. JavaScript之<script>标签简介

    向html页面中插入JavaScrpt的主要方法,就是使用<script>元素,下面是Html 4.01为<script>定义的6个属性. 1.async:可选表示应该立即下载 ...

  2. JavaScript之面向对象学九(原型式继承和寄生式继承)

    一.原型式继承 该继承模式是由道格拉斯*克罗克福德在2006年提出的实现继承的方法. 模式的基本思路:借助原型可以基于已有的对象创建新的对象,同时还不必因此创建自定义类型. 代码如下: functio ...

  3. JavaScrtip之JS最佳实践

    一.JavaScript之平稳退化 这边使用一个当用户点击某个页面内某个链接弹出一个新窗口的案例: JavaScript使用window对象的open()方法来创建新的浏览器窗口; window.op ...

  4. 重构HTML改善web应用设计

    本文从良构,有效性,布局三个角度,结合往日项目开发经历, 整理总结重构HTML改善Web应用设计的几点规则和做法.部分参考自<重构HTML改善Web应用设计>. 重构.什么是重构?为什么要 ...

  5. SQL Server 大数据量批量插入

    private void AddShuJu_Click(object sender, RoutedEventArgs e) { Stopwatch wath = new Stopwatch(); wa ...

  6. (4)事件处理——(3)代码执行的顺序(Timing of code execution)

    In Chapter 1, Getting Started, we noted that $(document).ready()was jQuery's primary way to perform ...

  7. IISExpress实现外部访问

    首先修改IISExpress配置文件 \IISExpress\config\applicationhost.config 在website中添加一个binding <binding protoc ...

  8. QTabWiget Change Color 改变颜色(每个QWidget都有一个自己的调色板palette,设置它的颜色,然后setAutoFillBackground即可)

    Qt中的QTabWiget 类提供了一个便签控件,但是这个控件默认初始化的颜色是白色,和原窗口的颜色不同,看起来非常的违和,所以我们希望将其的背景颜色设为当前窗口的背景颜色.我们所要做的就是先将应用程 ...

  9. Android利用广播监听设备安装和卸载应用程序

    MainActivity如下: package cn.testappaddandremove; import android.os.Bundle; import android.app.Activit ...

  10. BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊(动态树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2002 [题目大意] 给出一片森林,操作允许更改一个节点的父亲,查询一个节点的深度. [ ...