Maven 2 & 3

Cannot Deploy Using Webdav due to DependencyManagement

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Resolution: Fixed
  • Affects Version/s: 2.0.6
  • Fix Version/s: 2.0.7
  • Component/s: Dependencies, Deployment
  • Labels:
    None
  • Complexity:
    Intermediate
  • Number of attachments :
    1

Description

The webdav wagon requires commons-httpclient-2.0.2.jar. If I have a dependencyManagement section that specifies commons-httpclient 3.0.1, then deployment fails.
The resulting output is:
[duncans@J9LAPHP-18811 webdavtest]$ mvn deploy
[INFO] Scanning for projects...
[INFO] artifact org.apache.maven.wagon:wagon-webdav: checking for updates from ce-releases
-----------------------------------------------------
this realm = app0.child-container[extensions]
urls[0] = file:/home/duncans/.m2/repository/de/zeigermann/xml/xml-im-exporter/1.1/xml-im-exporter-1.1.jar
urls[1] = file:/home/duncans/.m2/repository/jdom/jdom/1.0/jdom-1.0.jar
urls[2] = file:/home/duncans/.m2/repository/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar
urls[3] = file:/home/duncans/.m2/repository/commons-codec/commons-codec/1.2/commons-codec-1.2.jar
urls[4] = file:/home/duncans/.m2/repository/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.jar
urls[5] = file:/home/duncans/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
urls[6] = file:/home/duncans/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar
urls[7] = file:/home/duncans/.m2/repository/commons-httpclient/commons-httpclient/3.0.1/commons-httpclient-3.0.1.jar
urls[8] = file:/home/duncans/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
Number of imports: 0
this realm = plexus.core
urls[0] = file:/home/duncans/apps/maven/lib/maven-core-2.0.6-uber.jar
Number of imports: 0
-----------------------------------------------------
[INFO] ----------------------------------------------------------------------------
[INFO] Building Unnamed - test:webdavtest:pom:1.0-SNAPSHOT
[INFO] task-segment: [deploy]
[INFO] ----------------------------------------------------------------------------
[INFO] [site:attach-descriptor]
[INFO] [install:install]
[INFO] Installing /home/duncans/tmp/webdavtest/pom.xml to /home/duncans/.m2/repository/test/webdavtest/1.0-SNAPSHOT/webdavtest-1.0-SNAPSHOT.pom
[INFO] [deploy:deploy]
altDeploymentRepository = null
[INFO] Retrieving previous build number from snapshots
[WARNING] repository metadata for: 'snapshot test:webdavtest:1.0-SNAPSHOT' could not be retrieved from repository: snapshots due to an error: Unsupported Protocol: 'dav': Cannot find wagon which supports the requested protocol: dav
[INFO] Repository 'snapshots' will be blacklisted
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error deploying artifact: Unsupported Protocol: 'dav': Cannot find wagon which supports the requested protocol: dav
Component descriptor cannot be found in the component repository: org.apache.maven.wagon.Wagondav.
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Thu Apr 05 13:49:52 EDT 2007
[INFO] Final Memory: 6M/10M
[INFO] ------------------------------------------------------------------------

Activity

Hide
Stephen Duncan Jr added a comment -

Notes: This only happens with Maven 2.0.6, not with 2.0.5.

Also, is not only dependencyManagement that seems to break the extension, but also a direct dependency, or anything that causes the wrong version of commons-httpclient to be resolved. Dependency resolution within the project should no affect extension dependency resolution.

Show
Stephen Duncan Jr added a comment - Notes: This only happens with Maven 2.0.6, not with 2.0.5. Also, is not only dependencyManagement that seems to break the extension, but also a direct dependency, or anything that causes the wrong version of commons-httpclient to be resolved. Dependency resolution within the project should no affect extension dependency resolution.
Hide
Jason van Zyl added a comment -

You need to specify the version in dependencyManagement to lock down the version, but you must also specify the dependency itself. Listing a dependency in the dependencyManagement section is only a statement of your version preference. The dependency listed does not go into the graph.

Show
Jason van Zyl added a comment - You need to specify the version in dependencyManagement to lock down the version, but you must also specify the dependency itself. Listing a dependency in the dependencyManagement section is only a statement of your version preference. The dependency listed does not go into the graph.
Hide
Stephen Duncan Jr added a comment -

Jason, I don't understand the relevancy of your comment. I have a parent POM that specifies a newer version of commons-httpclient in dependencyManagement. In any project using this parent POM, the webdav wagon does not work because that newer version is used, instead of the correct dependency of the webdav wagon. Whether I have specified an actual dependency on commons-httpclient doesn't have any effect. The problem here is that some change between Maven 2.0.5 and 2.0.6 caused the extension's dependencies and/or classloader to be affected by the project's dependency resolution. Extensions should be able to load their dependencies in an isolated fashion, so that the webdav wagon can work on a project that requires the newer commons-httpclient.

Show
Stephen Duncan Jr added a comment - Jason, I don't understand the relevancy of your comment. I have a parent POM that specifies a newer version of commons-httpclient in dependencyManagement. In any project using this parent POM, the webdav wagon does not work because that newer version is used, instead of the correct dependency of the webdav wagon. Whether I have specified an actual dependency on commons-httpclient doesn't have any effect. The problem here is that some change between Maven 2.0.5 and 2.0.6 caused the extension's dependencies and/or classloader to be affected by the project's dependency resolution. Extensions should be able to load their dependencies in an isolated fashion, so that the webdav wagon can work on a project that requires the newer commons-httpclient.
Hide
Stephen Duncan Jr added a comment -

Further testing shows the problem only occurs when specifying the version in dependencyManagement; a direct dependency on the newer commons-httpclient (without dependencyManagement) does not seem to effect the wagon-webdav being loaded as an extension.

Show
Stephen Duncan Jr added a comment - Further testing shows the problem only occurs when specifying the version in dependencyManagement; a direct dependency on the newer commons-httpclient (without dependencyManagement) does not seem to effect the wagon-webdav being loaded as an extension.
Hide
Jason van Zyl added a comment -

I needed the fuller explanation. It is the extension manager that is at fault here and the changes for MNG-1577 are affecting the resolution for extensions which is not right. Yup, this is definitely a problem.

Show
Jason van Zyl added a comment - I needed the fuller explanation. It is the extension manager that is at fault here and the changes for MNG-1577 are affecting the resolution for extensions which is not right. Yup, this is definitely a problem.
Hide
Jason van Zyl added a comment -

Patrick is going to take a look at this for us.

Show
Jason van Zyl added a comment - Patrick is going to take a look at this for us.
Hide
Jason van Zyl added a comment -

Running integration tests now. It was a simple fix of not giving the managed dependency map to the artifact resolution. The rule being extensions dependencies should not be affected by the dependency requirements of the project itself.

If the ITs pass I will apply the patch and we should be close to staging 2.0.7.

Show
Jason van Zyl added a comment - Running integration tests now. It was a simple fix of not giving the managed dependency map to the artifact resolution. The rule being extensions dependencies should not be affected by the dependency requirements of the project itself. If the ITs pass I will apply the patch and we should be close to staging 2.0.7.
Hide
Jason van Zyl added a comment -

Problem fixed for the 2.0.7 release. Same fix applied to the trunk.

Show
Jason van Zyl added a comment - Problem fixed for the 2.0.7 release. Same fix applied to the trunk.
Hide
Jochen Wiedmann added a comment -

Is this actually fixed? I've got the same problem with 2.0.7-SNAPSHOT, as picked from prople.apache.org/~jvanzyl some minutes ago.

Show
Jochen Wiedmann added a comment - Is this actually fixed? I've got the same problem with 2.0.7-SNAPSHOT, as picked from prople.apache.org/~jvanzyl some minutes ago.
Hide
Jochen Wiedmann added a comment -

Is this actually fixed? I still do have the same problem, with 2.0.7-SNAPSHOT as available from Jason's home on people.apache.org with a date of 10-June-2007.

Show
Jochen Wiedmann added a comment - Is this actually fixed? I still do have the same problem, with 2.0.7-SNAPSHOT as available from Jason's home on people.apache.org with a date of 10-June-2007.
Hide
Jason van Zyl added a comment -

Yes, given the sample POM I was given. I correct the extension loader and the right version of httpclient is loaded.

Show
Jason van Zyl added a comment - Yes, given the sample POM I was given. I correct the extension loader and the right version of httpclient is loaded.
Hide
Jason van Zyl added a comment -

If you have a problem, give me your sample build and open another issue.

Show
Jason van Zyl added a comment - If you have a problem, give me your sample build and open another issue.
Hide
Jochen Wiedmann added a comment -

Ok, confirmed, 2.0.7-SNAPSHOT works. I didn't have declared wagon-webdav as an extension.

Show
Jochen Wiedmann added a comment - Ok, confirmed, 2.0.7-SNAPSHOT works. I didn't have declared wagon-webdav as an extension.

People

Vote (3)
Watch (4)

Dates

  • Created:
    Updated:
    Resolved: