[ https://jira.codehaus.org/browse/MNG-5324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=306021#comment-306021 ]
Anton Smeenk commented on MNG-5324: ----------------------------------- Hello guys, i did do some debugging and I think I found the error. The bug is in module maven-aether-provider in function resolveVersion. This function is entered sometimes with an artifact with a snapshot version which ends on "SNAPSHOT". Sometimes it is entered with the shapshot artifact version with the timestamp in its name. If I replace the name of the version with the base version (effectively always using the version ending on SNAPSHOT it works (almost) A second bug is in one of the merge functions. I noticed that sometimes the content of the infos map is partly destroyed by the merge function. With these 2 small changes maven can resolve now artifacts with different classifiers and different timestamps. Attached is the file I modified, still with some logging on warning level you have to remove of course. The original file is douwloaded from svn on 12/8/2012. Thanks Anton Smeenk > Incorrect parsing of metadata by Maven: Cannot find snapshot artifact with > older timestamp > ------------------------------------------------------------------------------------------ > > Key: MNG-5324 > URL: https://jira.codehaus.org/browse/MNG-5324 > Project: Maven 2 & 3 > Issue Type: Bug > Components: Artifacts and Repositories > Affects Versions: 3.0.4 > Reporter: Anton Smeenk > > Maven can only retrieve an artifact from Nexus with a classifier with latest > timestamp. > Artifacts with classifiers with an older timestamp cannot be resolved. > For example. If I deploy an artifact Apple with classifier A and a bit later > deploy the same artifact with classifier B. > Next I want to retrieve the artifacts from Nexus: > For a module Banana, which needs Apple with classifier A the Artifact > resolver will fail. > For a module Strawberry, which needs Apple with classifier B the Artifact > resolver will succesfully resolve the artifact. > I found the cause for this behaviour: > With an proxy between Maven and Nexus I could see the behavour of Maven, at > the moment that I want to fetch an artifact: > First the metadata.xml is fetched from Nexus. This file does contain the > timestamp of the latest artifact in nexus and all timestamps of older > artifacts, with different classifier. > From this metdata file Maven figures out what the correct name is for the > artifact. > But Maven can resolve the name of classifierb, but not the name of > classifierB. > The metadata is not correctly parsed! All information is there, but still > Maven can only find the artifact with the latest timestamp. > Here is an example of an metadata file: > <metadata modelVersion="1.1.0"> > <groupId>com.ccv.systems.modules.gen_modem</groupId> > <artifactId>modem</artifactId> > <version>07.20.3-SNAPSHOT</version> > <versioning> > <snapshot> > <timestamp>20120809.112920</timestamp> > <buildNumber>97</buildNumber> > </snapshot> > <lastUpdated>20120809112920</lastUpdated> > <snapshotVersion> > <classifier>classsifierA</classifier> > <extension>jar</extension> > <value>07.20.3-20120809.112124-88</value> > <updated>20120809112124</updated> > </snapshotVersion> > <snapshotVersion> > <classifier>classsifierB</classifier> > <extension>jar</extension> > <value>07.20.3-20120809.112920-97</value> > <updated>20120809112920</updated> > </snapshotVersion> > </snapshotVersions> > </versioning> > </metadata> -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira