[
http://jira.codehaus.org/browse/MNG-2793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp updated MNG-2793:
-----------------------------
Priority: Critical (was: Major)
Affects Version/s: 2.0.5
Fix Version/s: 2.0.6
> 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, 2.0.5
> Reporter: Daniel Kulp
> Priority: Critical
> Fix For: 2.0.6
>
> 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