Uploaded image for project: 'Maven SCM'
  1. Maven SCM
  2. SCM-496

org.apache.maven.scm.NoSuchCommandScmException: No such command 'list' when the Perforce SCM Provider is used by the SCM Wagon in "maven deploy"

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Won't Fix
    • None
    • None
    • None
    • Maven 2.2.1, jdk 1.6 SR16, Win32
    • Patch

    Description

      After having taken a look in the svn in trunk, the AbstractScmProvider & its implementations except Perforce implement the AbstractScmProvider.list() method.
      As this method is called by the ScmWagon, & because it is not implemented in the PerforceScmProvider, it generates this exception (generated by the AbstractScmProvider.list() code ) :

      Uploading: scm:perforce:llecaroz@pperforce.server.com:1971://experiments/llecaroz/Maven/Repository/demo/foo/app/tp.sun.java-test-1/1.2-SNAPSHOT/tp.sun.java-test-1-1.2-20090903.105728-1.jar
      [INFO] No password found, proceeding without it.
      [DEBUG] No such command 'list'.
      org.apache.maven.scm.NoSuchCommandScmException: No such command 'list'.
      at org.apache.maven.scm.provider.AbstractScmProvider.list(AbstractScmProvider.java:595)
      at org.apache.maven.scm.provider.AbstractScmProvider.list(AbstractScmProvider.java:579)
      at org.apache.maven.wagon.providers.scm.ScmWagon.checkOut(ScmWagon.java:371)
      at org.apache.maven.wagon.providers.scm.ScmWagon.putInternal(ScmWagon.java:285)
      at org.apache.maven.wagon.providers.scm.ScmWagon.put(ScmWagon.java:254)
      at org.apache.maven.artifact.manager.DefaultWagonManager.putRemoteFile(DefaultWagonManager.java:317)
      at org.apache.maven.artifact.manager.DefaultWagonManager.putArtifact(DefaultWagonManager.java:227)
      at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:107)
      at org.apache.maven.plugin.deploy.DeployMojo.execute(DeployMojo.java:173)
      at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
      at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
      at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
      at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
      at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
      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.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)

      So I was unable to use the Perforce SCM Provider as SCM Wagn as you will see in this simplified attached/POM(testcase) to reproduce the issue.
      Don't forget to replace the url & username by a working one.

      To run it :
      -detach this pom
      -modify the url to a valid perforce server
      -launch "maven deploy"

      Tried with svn just by switching the extension from perforce into svn & modifying the url : no problem... as svn provider implements the list() method.
      So the list() method needs to be implemented in the PerforceScmProvider as solution.

      At this time from my understanding, no project can use perforce as repository.

      Thx in advance
      Louis

      Attachments

        1. pom.xml
          1 kB
          Louis Lecaroz
        2. SCM-496-maven-scm-provider-perforce-1.2.patch
          13 kB
          Andrey Ashikhmin

        Issue Links

          Activity

            People

              Unassigned Unassigned
              llecaroz Louis Lecaroz
              Votes:
              2 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: