Maven
  1. Maven
  2. MNG-2900

Extensions that have no declared dependency on plexus-utils yet need it at runtime will fail.

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.0.6
    • Component/s: None
    • Labels:
      None

      Description

      This is happening with the WebDAV Wagon:

      java.lang.NoClassDefFoundError: org/codehaus/plexus/util/StringUtils
      at org.apache.maven.wagon.providers.webdav.WebDavWagon.put(WebDavWagon.java:192)
      at org.apache.maven.artifact.manager.DefaultWagonManager.putRemoteFile(DefaultWagonManager.java:237)
      at org.apache.maven.artifact.manager.DefaultWagonManager.putArtifact(DefaultWagonManager.java:153)
      at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:80)
      at org.apache.maven.plugin.deploy.DeployMojo.execute(DeployMojo.java:162)
      at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:443)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:459)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:278)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:143)
      at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334)
      at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125)
      at org.apache.maven.cli.MavenCli.main(MavenCli.java:272)
      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:585)
      at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
      at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
      at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
      at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

        Issue Links

          Activity

          Hide
          Jason van Zyl added a comment -

          Fixed in the same way we do for plugins that use, but don't specy plexus-utils.

          Show
          Jason van Zyl added a comment - Fixed in the same way we do for plugins that use, but don't specy plexus-utils.
          Hide
          Stephane Nicoll added a comment -

          Jason, this one misses a fix version right?

          Show
          Stephane Nicoll added a comment - Jason, this one misses a fix version right?
          Hide
          Brill Pappin added a comment -

          This appears to be "fixed" but is defiantly still broken... and the only message in the ticket is "Fixed in the same way we do for plugins that use, but don't specy plexus-utils."... Would anyone care to elaborate on what this magical fix is?

          Show
          Brill Pappin added a comment - This appears to be "fixed" but is defiantly still broken... and the only message in the ticket is "Fixed in the same way we do for plugins that use, but don't specy plexus-utils."... Would anyone care to elaborate on what this magical fix is?
          Hide
          Jason van Zyl added a comment -

          The classloader for the extension is search to see if plexus-utils is present, if it is then the version specifed by the extension is used. If it is not, then version 1.1 of plexus-utils is inserted into the classloader to replicate the behavior of 2.0.5.

          Show
          Jason van Zyl added a comment - The classloader for the extension is search to see if plexus-utils is present, if it is then the version specifed by the extension is used. If it is not, then version 1.1 of plexus-utils is inserted into the classloader to replicate the behavior of 2.0.5.
          Hide
          Jason van Zyl added a comment -

          In this particular case we are dealing with the webdav extension and this is what we use for Plexus and we deploy all the time. And my test server that has WebDAV enables works without error. Now if you have other extensions that are not WebDAV but something else then we need the specific setup. You can't just say categorically that it doesn't work when this stack track deals specifically with the WebDAV extension. If you are using WebDAV then we need to see the POM for anything else that may be causing you problems.

          Show
          Jason van Zyl added a comment - In this particular case we are dealing with the webdav extension and this is what we use for Plexus and we deploy all the time. And my test server that has WebDAV enables works without error. Now if you have other extensions that are not WebDAV but something else then we need the specific setup. You can't just say categorically that it doesn't work when this stack track deals specifically with the WebDAV extension. If you are using WebDAV then we need to see the POM for anything else that may be causing you problems.
          Hide
          Calin Medianu added a comment -

          Hi,

          In 2.0.7 the error has changed, but it it still not possible to do a DAV upload from the command line. in 2.0.6 I was getting the StringUtils stacktrace.

          $ ./mvn.bat deploy:deploy-file -DgroupId=test.case -DartifactId=GWT-Stuff -Dversion=20070309 -DgeneratePom=true -Dpackaging=jar -DrepositoryId=server -Durl=dav:http://server:7777/maven2/sandbox -Dfile=GWT-Stuff.jar

          [INFO] Scanning for projects...
          [INFO] Searching repository for plugin with prefix: 'deploy'.
          [INFO] ---------------------------------------------------------------------------
          -
          [INFO] Building Maven Default Project
          [INFO] task-segment: [deploy:deploy-file] (aggregator-style)
          [INFO] ---------------------------------------------------------------------------
          -
          [INFO] [deploy:deploy-file]
          [INFO] ------------------------------------------------------------------------
          [ERROR] BUILD ERROR
          [INFO] ------------------------------------------------------------------------
          [INFO] Error deploying artifact: Unsupported Protocol: 'dav': Cannot find wagon wh
          ich 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: 1 second
          [INFO] Finished at: Wed Jun 27 12:40:22 PDT 2007
          [INFO] Final Memory: 2M/5M
          [INFO] ------------------------------------------------------------------------

          org.apache.maven.lifecycle.LifecycleExecutionException: Error deploying artifact:
          Unsupported Protocol: 'dav': Cannot find wagon which supports the requested protoc
          ol: dav
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defaul
          tLifecycleExecutor.java:564)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGo
          al(DefaultLifecycleExecutor.java:493)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Default
          LifecycleExecutor.java:463)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandl
          eFailures(DefaultLifecycleExecutor.java:311)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments
          (DefaultLifecycleExecutor.java:224)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLife
          cycleExecutor.java:143)
          at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334)
          at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125)
          at org.apache.maven.cli.MavenCli.main(MavenCli.java:280)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja
          va:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso
          rImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
          at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
          at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
          at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
          Caused by: org.apache.maven.plugin.MojoExecutionException: Error deploying artifac
          t: Unsupported Protocol: 'dav': Cannot find wagon which supports the requested pro
          tocol: dav
          at org.apache.maven.plugin.deploy.DeployFileMojo.execute(DeployFileMojo.ja
          va:243)
          at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginM
          anager.java:443)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defaul
          tLifecycleExecutor.java:539)
          ... 16 more
          Caused by: org.apache.maven.artifact.deployer.ArtifactDeploymentException: Error d
          eploying artifact: Unsupported Protocol: 'dav': Cannot find wagon which supports t
          he requested protocol: dav
          at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(Defau
          ltArtifactDeployer.java:94)
          at org.apache.maven.plugin.deploy.DeployFileMojo.execute(DeployFileMojo.ja
          va:239)
          ... 18 more
          Caused by: org.apache.maven.wagon.TransferFailedException: Unsupported Protocol: '
          dav': Cannot find wagon which supports the requested protocol: dav
          at org.apache.maven.artifact.manager.DefaultWagonManager.putRemoteFile(Def
          aultWagonManager.java:184)
          at org.apache.maven.artifact.manager.DefaultWagonManager.putArtifact(Defau
          ltWagonManager.java:153)
          at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(Defau
          ltArtifactDeployer.java:80)
          ... 19 more
          Caused by: org.apache.maven.wagon.UnsupportedProtocolException: Cannot find wagon
          which supports the requested protocol: dav
          at org.apache.maven.artifact.manager.DefaultWagonManager.getWagon(DefaultW
          agonManager.java:128)
          at org.apache.maven.artifact.manager.DefaultWagonManager.putRemoteFile(Def
          aultWagonManager.java:178)
          ... 21 more
          Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupExcep
          tion: Component descriptor cannot be found in the component repository: org.apache
          .maven.wagon.Wagondav.
          at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContaine
          r.java:323)
          at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContaine
          r.java:440)
          at org.apache.maven.artifact.manager.DefaultWagonManager.getWagon(DefaultW
          agonManager.java:124)
          ... 22 more

          Thank you,

          Calin

          Show
          Calin Medianu added a comment - Hi, In 2.0.7 the error has changed, but it it still not possible to do a DAV upload from the command line. in 2.0.6 I was getting the StringUtils stacktrace. $ ./mvn.bat deploy:deploy-file -DgroupId=test.case -DartifactId=GWT-Stuff -Dversion=20070309 -DgeneratePom=true -Dpackaging=jar -DrepositoryId=server -Durl=dav: http://server:7777/maven2/sandbox -Dfile=GWT-Stuff.jar [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'deploy'. [INFO] --------------------------------------------------------------------------- - [INFO] Building Maven Default Project [INFO] task-segment: [deploy:deploy-file] (aggregator-style) [INFO] --------------------------------------------------------------------------- - [INFO] [deploy:deploy-file] [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Error deploying artifact: Unsupported Protocol: 'dav': Cannot find wagon wh ich 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: 1 second [INFO] Finished at: Wed Jun 27 12:40:22 PDT 2007 [INFO] Final Memory: 2M/5M [INFO] ------------------------------------------------------------------------ org.apache.maven.lifecycle.LifecycleExecutionException: Error deploying artifact: Unsupported Protocol: 'dav': Cannot find wagon which supports the requested protoc ol: dav at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defaul tLifecycleExecutor.java:564) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGo al(DefaultLifecycleExecutor.java:493) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Default LifecycleExecutor.java:463) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandl eFailures(DefaultLifecycleExecutor.java:311) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments (DefaultLifecycleExecutor.java:224) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLife cycleExecutor.java:143) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125) at org.apache.maven.cli.MavenCli.main(MavenCli.java:280) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja va:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso rImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) Caused by: org.apache.maven.plugin.MojoExecutionException: Error deploying artifac t: Unsupported Protocol: 'dav': Cannot find wagon which supports the requested pro tocol: dav at org.apache.maven.plugin.deploy.DeployFileMojo.execute(DeployFileMojo.ja va:243) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginM anager.java:443) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defaul tLifecycleExecutor.java:539) ... 16 more Caused by: org.apache.maven.artifact.deployer.ArtifactDeploymentException: Error d eploying artifact: Unsupported Protocol: 'dav': Cannot find wagon which supports t he requested protocol: dav at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(Defau ltArtifactDeployer.java:94) at org.apache.maven.plugin.deploy.DeployFileMojo.execute(DeployFileMojo.ja va:239) ... 18 more Caused by: org.apache.maven.wagon.TransferFailedException: Unsupported Protocol: ' dav': Cannot find wagon which supports the requested protocol: dav at org.apache.maven.artifact.manager.DefaultWagonManager.putRemoteFile(Def aultWagonManager.java:184) at org.apache.maven.artifact.manager.DefaultWagonManager.putArtifact(Defau ltWagonManager.java:153) at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(Defau ltArtifactDeployer.java:80) ... 19 more Caused by: org.apache.maven.wagon.UnsupportedProtocolException: Cannot find wagon which supports the requested protocol: dav at org.apache.maven.artifact.manager.DefaultWagonManager.getWagon(DefaultW agonManager.java:128) at org.apache.maven.artifact.manager.DefaultWagonManager.putRemoteFile(Def aultWagonManager.java:178) ... 21 more Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupExcep tion: Component descriptor cannot be found in the component repository: org.apache .maven.wagon.Wagondav. at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContaine r.java:323) at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContaine r.java:440) at org.apache.maven.artifact.manager.DefaultWagonManager.getWagon(DefaultW agonManager.java:124) ... 22 more Thank you, Calin
          Hide
          Jason van Zyl added a comment -

          We need your POM as you must have something different. I upload via WebDAV all day with 2.0.7 as I did with 2.0.6. I need to see the project.

          Show
          Jason van Zyl added a comment - We need your POM as you must have something different. I upload via WebDAV all day with 2.0.7 as I did with 2.0.6. I need to see the project.
          Hide
          Calin Medianu added a comment -

          Thank you for your reply.

          There is no POM or project. With this command line I am trying to upload (deploy:deploy-file) a pomless jar into the repository. The command line is:

          ./mvn.bat deploy:deploy-file -DgroupId=test.case -DartifactId=GWT-Stuff -Dversion=20070309 -DgeneratePom=true -Dpackaging=jar -DrepositoryId=server -Durl=dav:http://server:7777/maven2/sandbox -Dfile=GWT-Stuff.jar

          I expect it to generate the pom and the checksums.

          I got this working in 2.0.4 by adding a bunch of dav related files to maven-2.0.4\lib

          Thanks,

          Calin

          Show
          Calin Medianu added a comment - Thank you for your reply. There is no POM or project. With this command line I am trying to upload (deploy:deploy-file) a pomless jar into the repository. The command line is: ./mvn.bat deploy:deploy-file -DgroupId=test.case -DartifactId=GWT-Stuff -Dversion=20070309 -DgeneratePom=true -Dpackaging=jar -DrepositoryId=server -Durl=dav: http://server:7777/maven2/sandbox -Dfile=GWT-Stuff.jar I expect it to generate the pom and the checksums. I got this working in 2.0.4 by adding a bunch of dav related files to maven-2.0.4\lib Thanks, Calin
          Hide
          Jason van Zyl added a comment -

          Right ... this is a known problem and you must load webdav as an extension or you must have had the dav libraries in your classpath, or Maven home for this to work. We are aware of this problem. When webdav is listed as an extension, which is the only way it works, then you can deploy fine. So this problem is actually fixed, and in the future it might be a little more kind to a project like Maven not to post your issues to site like TSS telling the world the issue hasn't been fixed when, in fact, is was. You have a different problem.

          We will make the deployment plugin smarter in that it should parse user supplied URLs for Wagon extensions and load them. But this is not a an issue with plexus-utils not being present. I deploy everyday using WebDAV but it doesn have to be configured in the POM to load the extension into the right classloader.

          Show
          Jason van Zyl added a comment - Right ... this is a known problem and you must load webdav as an extension or you must have had the dav libraries in your classpath, or Maven home for this to work. We are aware of this problem. When webdav is listed as an extension, which is the only way it works, then you can deploy fine. So this problem is actually fixed, and in the future it might be a little more kind to a project like Maven not to post your issues to site like TSS telling the world the issue hasn't been fixed when, in fact, is was. You have a different problem. We will make the deployment plugin smarter in that it should parse user supplied URLs for Wagon extensions and load them. But this is not a an issue with plexus-utils not being present. I deploy everyday using WebDAV but it doesn have to be configured in the POM to load the extension into the right classloader.
          Hide
          Calin Medianu added a comment -

          Hi,

          Thanks again for looking into it. Indeed, in 2.0.7 this issue is fixed and another issue has surfaced. In 2.0.6 is is NOT fixed. I said on TSS that this bug was not fixed in 2.0.6, which is true.

          My comment on TSS was unkind and I'm sorry for that. The reason was to draw attention to the comment from Brill Pappin - [07/May/07 12:04 PM ] which was ignored for 2 months as well as the frustration from having to support a co-worker that decided to upgrade from 2.0.4 to 2.0.6 and DAV stopped working for her. in 2.0.4 dav is working from the command line with the extra jars in maven/lib, in 2.0.6 it cannot find the org/codehaus/plexus/util/StringUtils

          I am actually a promoter of maven2 in my organization...

          Thanks,

          Calin

          Show
          Calin Medianu added a comment - Hi, Thanks again for looking into it. Indeed, in 2.0.7 this issue is fixed and another issue has surfaced. In 2.0.6 is is NOT fixed. I said on TSS that this bug was not fixed in 2.0.6, which is true. My comment on TSS was unkind and I'm sorry for that. The reason was to draw attention to the comment from Brill Pappin - [07/May/07 12:04 PM ] which was ignored for 2 months as well as the frustration from having to support a co-worker that decided to upgrade from 2.0.4 to 2.0.6 and DAV stopped working for her. in 2.0.4 dav is working from the command line with the extra jars in maven/lib, in 2.0.6 it cannot find the org/codehaus/plexus/util/StringUtils I am actually a promoter of maven2 in my organization... Thanks, Calin
          Hide
          Jason van Zyl added a comment -

          We appreciate that, and I know people get frustrated but we're just like every other development shop that has problems ... ours is just spread out all over the world and we have very few dedicated resources. Also, that a comment isn't made in JIRA doesn't mean we're not looking at something. We could probably comment better, or mark issues as in progress but I looked at the issue pretty soon after it was report though it did take me a few weeks to getting around to fixing it.

          Show
          Jason van Zyl added a comment - We appreciate that, and I know people get frustrated but we're just like every other development shop that has problems ... ours is just spread out all over the world and we have very few dedicated resources. Also, that a comment isn't made in JIRA doesn't mean we're not looking at something. We could probably comment better, or mark issues as in progress but I looked at the issue pretty soon after it was report though it did take me a few weeks to getting around to fixing it.

            People

            • Assignee:
              Jason van Zyl
              Reporter:
              Jason van Zyl
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development