You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Matthew Beermann (JIRA)" <ji...@codehaus.org> on 2007/01/25 17:20:44 UTC

[jira] Commented: (MNG-2793) Snapshot plugins cannot be resolved correctly with java6

    [ http://jira.codehaus.org/browse/MNG-2793?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_86004 ] 

Matthew Beermann commented on MNG-2793:
---------------------------------------

I don't know that this issue affects snapshot _plugins_ only... we've encountered it with snapshot dependencies in general.

> Snapshot plugins cannot be resolved correctly with java6
> --------------------------------------------------------
>
>                 Key: MNG-2793
>                 URL: http://jira.codehaus.org/browse/MNG-2793
>             Project: Maven 2
>          Issue Type: Bug
>          Components: Artifacts and Repositories, Dependencies
>    Affects Versions: 2.0.4
>            Reporter: Daniel Kulp
>         Attachments: maven-artifact-manager.patch
>
>
> With java 6, builds that use snapshot repositories are consistently failing if the snapshots are not available in the local repository.  The error is something like:
> [INFO] ----------------------------------------------------------------------------
> [DEBUG] Retrieving parent-POM: org.apache.maven.plugins:maven-plugins::1 for project: null:maven-site-plugin:maven-plugin:2.0-beta-5 from the repository.
> [DEBUG] Retrieving parent-POM: org.apache.maven:maven-parent::1 for project: org.apache.maven.plugins:maven-plugins:pom:1 from the repository.
> [DEBUG] Retrieving parent-POM: org.apache:apache::1 for project: org.apache.maven:maven-parent:pom:1 from the repository.
> [DEBUG] maven-install-plugin: using locally installed snapshot
> [DEBUG] maven-install-plugin: resolved to version 2.2-SNAPSHOT from repository central
> [DEBUG] Skipping disabled repository central
> [INFO] ------------------------------------------------------------------------
> [ERROR] BUILD ERROR
> [INFO] ------------------------------------------------------------------------
> [INFO] Error building POM (may not be this project's POM).
> Project ID: org.apache.maven.plugins:maven-install-plugin
> Reason: Error getting POM for 'org.apache.maven.plugins:maven-install-plugin' from the repository: Failed to resolve artifact, possibly due to a repository list that is not appropriately equipped for this artifact's metadata.
>   org.apache.maven.plugins:maven-install-plugin:pom:2.2-SNAPSHOT
> from the specified remote repositories:
>   apache.snapshots (http://people.apache.org/repo/m2-snapshot-repository),
>   central (http://repo1.maven.org/maven2)
> If the artifacts are first downloaded by building with JDK 1.5, everything works fine.
> After investigating, the problem is in the transforms that the maven-artifact-manager.   With JDK 1.5, the order they run is:
> org.apache.maven.artifact.transform.LatestArtifactTransformation
> org.apache.maven.artifact.transform.ReleaseArtifactTransformation
> org.apache.maven.artifact.transform.SnapshotTransformation
> but with Java 6, for some reason, the order is:
> org.apache.maven.artifact.transform.SnapshotTransformation
> org.apache.maven.artifact.transform.LatestArtifactTransformation
> org.apache.maven.artifact.transform.ReleaseArtifactTransformation
> The LatestArtifactTransform is what uses to the metadata to determine 
> the "actual" version number (for the install plugin, 2.2-SNAPSHOT).  The 
> SnapshotTransform then converts that to 2.2-20061118.060401-2 which is what 
> is then downloaded.   However, in the java 6 case, the SnapshotTransform is 
> run first and since the version is not a "SNAPSHOT" version number, it 
> doesn't do any processing so then the downloading ends up looking for 
> 2.2-SNAPSHOT, not the full version, which then fails.
> I chatted with brett_ on IRC about this:
> [09:46:35] <dkulp> OK.  I'm trying to track down why  my builds are failing with JDK 1.6
> [09:46:53] <dkulp> The issue is the transforms are in a different order with 1.6 than 1.5
> [09:47:17] <brett_> yikes
> [09:47:42] <dkulp> With 1.5, its Latest/Release/Snapshot.
> [09:47:46] <brett_> not sure why that would matter. But I guess sorting the transforms consistently would help.
> [09:47:50] <dkulp> With 1.6, it's Snapshot/Latest/Release
> [09:48:06] <brett_> ok, fairly simple to fix in Maven.
> [09:48:10] <dkulp> The Latest needs to be before Snapshot.
> [09:49:08] <dkulp> I tried changing the order of things in the components.xml.   Didn't seem to change anything.   But this is plexus stuff which I don't know anything about.
> [09:49:22] <brett_> hmm, it should be populated as a list
> [09:49:28] <brett_> but maybe the list is backed by a map
> [09:49:35] <dkulp> Yep.   Verified it's and ArrayList
> [09:49:51] <brett_> s/backed/populated by/
> [09:50:48] <dkulp> That would definitely do it.
> [09:51:21] <dkulp> Any hints on where to look?
> [09:51:48] <brett_> oh, I would go into plexus
> [09:51:52] <dkulp> (or how to debug)?
> [09:51:58] <brett_> sorry, wouldn't
> [09:52:13] <brett_> it's changing too much
> [09:52:18] <brett_> 2.0.5 will be stuck with alpha-10
> [09:52:24] <brett_> so, need to work around it in Maven
> [09:53:00] <brett_> perhaps just hack the order in the code, and then fix plexus to honour the order in components.xml in trunk
> [09:54:57] <dkulp> Hmm..    ok.    Is there something plexus will call after setting the List field so I can resort it?
> [09:55:30] <dkulp> Or will adding a "setArtifactTransformations(List)" work?
> [09:55:40] <dkulp> (again, not familiar with plexus)
> [09:56:25] <brett_> no, it sets it using private field injection
> [09:57:04] <dkulp> No  optional "init" methods or anything that are called after everything is done?
> [09:57:42] <brett_> you can implement Initializable and modify them then
> [09:57:50] <brett_> but you could just as easily do that inside the method using it
> [09:58:08] <dkulp> There are 4 methods using it that are called to resolve every artifact.
> [09:58:24] <dkulp> Sorry, 3.
> [09:58:37] <dkulp> Kind of just wanted to sort once, not for each artifact.
> [09:58:46] <brett_> but the transformations should just exist in one class, and only used in one place, IIRC
> [10:06:46] <dkulp> brett_: thanks.   That actually works.
> The attached patch forces the "Snapshot" transform to the end of the list.   It's definitely not ideal.   Ideally, plexus would be fixed to honor ordering, but if plexus is in a state of flux, that might not be doable.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira