Transitive Dependency Resolution silently fails if parent pom cannot be
retrieved from repository
-------------------------------------------------------------------------------------------------
Key: MNG-4475
URL: http://jira.codehaus.org/browse/MNG-4475
Project: Maven 2
Issue Type: Bug
Affects Versions: 3.0-alpha-5, 3.0-alpha-4
Environment: Java 1.6_15, Mac OS X 10.6.2
Reporter: Sven Panko
While preparing our projects to be migrated from Maven 2 (currently using
2.2.1) to Maven 3 (3.0-alpha-5) I faced a problem concerning transitive
dependencies. I had the following setup:
3 projects:
* a parent project (PARENT)
* Project A (parent = PARENT with lots of 3rd party libs as dependencies)
* Project B (parent = PARENT and declares Project A to be a dependency)
I tried to build Project B using Maven 3 but the build failed, because Project
A's transitive dependencies were not resolved. When trying to build the same
project using Maven 2 it successfully picked up the transitive dependencies.
After a bit of searching I activated the error stacktraces and saw the
following exception when running the project's build with Maven 3:
[DEBUG] Unable to find resource 'PARENT:pom:0.4-SNAPSHOT' in repository
internal-snapshots (https://foo.bar/maven/internal-snapshots)
org.apache.maven.wagon.ResourceDoesNotExistException: Failure to resolve
PARENT/0.1-SNAPSHOT/PARENT-0.4-SNAPSHOT.pom from
https://foo.bar/maven/internal-snapshots was cached in the local repository.
Resolution will not be reattempted until the update interval of
internal-snapshots has elapsed or updates are forced.
at
org.apache.maven.repository.legacy.DefaultWagonManager.getArtifact(DefaultWagonManager.java:114)
at
org.apache.maven.repository.legacy.DefaultWagonManager.getArtifact(DefaultWagonManager.java:131)
at
org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:215)
at
org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:461)
at
org.apache.maven.repository.legacy.LegacyRepositorySystem.resolve(LegacyRepositorySystem.java:325)
at
org.apache.maven.project.RepositoryModelResolver.resolveModel(RepositoryModelResolver.java:171)
at
org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:567)
at
org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:434)
at
org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:179)
at
org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:117)
at
org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:112)
at
org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:232)
at
org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:191)
at
org.apache.maven.project.artifact.MavenMetadataSource.retrieveRelocatedProject(MavenMetadataSource.java:571)
at
org.apache.maven.project.artifact.MavenMetadataSource.retrieve(MavenMetadataSource.java:184)
at
org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.recurse(DefaultLegacyArtifactCollector.java:533)
at
org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.collect(DefaultLegacyArtifactCollector.java:150)
at
org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:541)
at
org.apache.maven.repository.legacy.LegacyRepositorySystem.resolve(LegacyRepositorySystem.java:325)
at
org.apache.maven.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:152)
at
org.apache.maven.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:66)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.resolveProjectDependencies(DefaultLifecycleExecutor.java:378)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:245)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:102)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:423)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:158)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
[WARNING] Invalid artifact metadata for projectA:jar:0.4.0: 1 problem was
encountered while building the effective model for projectA:0.4.0
[FATAL] Non-resolvable parent POM PARENT:0.1-SNAPSHOT for projectA:0.4.0:
Failed to resolve POM for PARENT:0.1-SNAPSHOT due to Missing:
...
The error message was of course correct, since the PARENT project wasn't
properly installed in my local repo, and I will now attempt to fix that, but
Maven 3 should not have swallowed this stacktrace, because it was totally
unclear why transitive dependencies were not resolved (while Project A itself
ended up on the classpath of Project B)
--
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