Cannot publish new artefact to webdav repo with maven plugin

We use the (old) Maven plugin to publish to to a Cloudbees repository using webdav. It works well for some of the sub projects, but we get a strange error on some sub projects. It seems as though when publishing a sub project which haven’t previously been published, the repo demands some further authentication, and this extra authentication fails.

Here’s the configuration:

configure(subprojects.findAll { [‘statistik-service’, ‘liquibase-runner’, ‘statistik-web’].contains(it.name) }) {

apply plugin: ‘maven’

configurations {

deployerJars

}

dependencies {

deployerJars “org.apache.maven.wagon:wagon-webdav:1.0-beta-2”

}

ext.cloudbeesUsername = System.properties[‘cloudbeesUsername’]

ext.cloudbeesPassword = System.properties[‘cloudbeesPassword’]

uploadArchives {

repositories {

mavenDeployer {

configuration = configurations.deployerJars

repository(url: “dav:https://repo.forge.cloudbees.com/snapshot/”) {

authentication(userName: cloudbeesUsername, password: cloudbeesPassword)

}

}

}

}

}

This works for statistik-service and statistik-web, but fails for liquibase-runner with the following stacktrace:

FAILURE: Build failed with an exception.

  • What went wrong:

Execution failed for task ‘:liquibase-runner:uploadArchives’.

Could not publish configuration ‘archives’

Error deploying artifact ‘se.inera.statistik:liquibase-runner:jar’: Error retrieving previous build number for artifact ‘se.inera.statistik:liquibase-runner:jar’: repository metadata for: ‘snapshot se.inera.statistik:liquibase-runner:2.0-SNAPSHOT’ could not be retrieved from repository: remote due to an error: Unsupported Protocol: ‘dav’: Cannot find wagon which supports the requested protocol: dav

  • Try:

Run with --info or --debug option to get more log output.

  • Exception is:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ‘:liquibase-runner:uploadArchives’.

at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)

at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)

at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)

at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)

at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)

at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)

at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)

at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)

at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)

at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:305)

at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)

at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)

at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)

at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)

at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88)

at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)

at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)

at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)

at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68)

at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)

at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)

at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55)

at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)

at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)

at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)

at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)

at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)

at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)

at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)

at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)

at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:47)

at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)

at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)

at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:35)

at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)

at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:24)

at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)

at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.java:33)

at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)

at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:71)

at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:69)

at org.gradle.util.Swapper.swap(Swapper.java:38)

at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:69)

at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)

at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)

at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)

at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)

at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:70)

at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)

at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)

at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(DaemonHygieneAction.java:39)

at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)

at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:46)

at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)

at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)

Caused by: org.gradle.api.artifacts.PublishException: Could not publish configuration ‘archives’

at org.gradle.api.tasks.Upload.upload(Upload.java:66)

at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)

at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218)

at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211)

at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200)

at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:579)

at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:562)

at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)

at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)

… 54 more

Caused by: Error deploying artifact ‘se.inera.statistik:liquibase-runner:jar’: Error retrieving previous build number for artifact ‘se.inera.statistik:liquibase-runner:jar’: repository metadata for: ‘snapshot se.inera.statistik:liquibase-runner:2.0-SNAPSHOT’ could not be retrieved from repository: remote due to an error: Unsupported Protocol: ‘dav’: Cannot find wagon which supports the requested protocol: dav

at org.apache.maven.artifact.ant.DeployTask.doExecute(DeployTask.java:144)

at org.gradle.api.publication.maven.internal.ant.CustomDeployTask.doExecute(CustomDeployTask.java:39)

at org.apache.maven.artifact.ant.AbstractArtifactTask.execute(AbstractArtifactTask.java:751)

at org.gradle.api.publication.maven.internal.ant.AbstractMavenResolver.execute(AbstractMavenResolver.java:111)

at org.gradle.api.publication.maven.internal.ant.AbstractMavenResolver.publish(AbstractMavenResolver.java:102)

at org.gradle.api.publication.maven.internal.ant.AbstractMavenResolver.publish(AbstractMavenResolver.java:80)

at org.gradle.api.internal.artifacts.ivyservice.DefaultIvyDependencyPublisher.publish(DefaultIvyDependencyPublisher.java:46)

at org.gradle.api.internal.artifacts.ivyservice.IvyBackedArtifactPublisher$1.execute(IvyBackedArtifactPublisher.java:79)

at org.gradle.api.internal.artifacts.ivyservice.IvyBackedArtifactPublisher$1.execute(IvyBackedArtifactPublisher.java:54)

at org.gradle.internal.Transformers$4.transform(Transformers.java:136)

at org.gradle.api.internal.artifacts.ivyservice.DefaultIvyContextManager.withIvy(DefaultIvyContextManager.java:61)

at org.gradle.api.internal.artifacts.ivyservice.DefaultIvyContextManager.withIvy(DefaultIvyContextManager.java:39)

at org.gradle.api.internal.artifacts.ivyservice.IvyBackedArtifactPublisher.publish(IvyBackedArtifactPublisher.java:54)

at org.gradle.api.tasks.Upload.upload(Upload.java:64)

… 62 more

Caused by: org.apache.maven.artifact.deployer.ArtifactDeploymentException: Error retrieving previous build number for artifact ‘se.inera.statistik:liquibase-runner:jar’: repository metadata for: ‘snapshot se.inera.statistik:liquibase-runner:2.0-SNAPSHOT’ could not be retrieved from repository: remote due to an error: Unsupported Protocol: ‘dav’: Cannot find wagon which supports the requested protocol: dav

at org.apache.maven.artifact.transform.SnapshotTransformation.transformForDeployment(SnapshotTransformation.java:106)

at org.apache.maven.artifact.transform.DefaultArtifactTransformationManager.transformForDeployment(DefaultArtifactTransformationManager.java:74)

at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:86)

at org.apache.maven.artifact.ant.DeployTask.doExecute(DeployTask.java:125)

… 75 more

Caused by: org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException: repository metadata for: ‘snapshot se.inera.statistik:liquibase-runner:2.0-SNAPSHOT’ could not be retrieved from repository: remote due to an error: Unsupported Protocol: ‘dav’: Cannot find wagon which supports the requested protocol: dav

at org.apache.maven.artifact.repository.metadata.DefaultRepositoryMetadataManager.resolveAlways(DefaultRepositoryMetadataManager.java:351)

at org.apache.maven.artifact.transform.SnapshotTransformation.resolveLatestSnapshotBuildNumber(SnapshotTransformation.java:161)

at org.apache.maven.artifact.transform.SnapshotTransformation.transformForDeployment(SnapshotTransformation.java:100)

… 78 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.getRemoteFile(DefaultWagonManager.java:477)

at org.apache.maven.artifact.manager.DefaultWagonManager.getArtifactMetadataFromDeploymentRepository(DefaultWagonManager.java:452)

at org.apache.maven.artifact.repository.metadata.DefaultRepositoryMetadataManager.getArtifactMetadataFromDeploymentRepository(DefaultRepositoryMetadataManager.java:379)

at org.apache.maven.artifact.repository.metadata.DefaultRepositoryMetadataManager.resolveAlways(DefaultRepositoryMetadataManager.java:347)

… 80 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(DefaultWagonManager.java:161)

at org.apache.maven.artifact.manager.DefaultWagonManager.getRemoteFile(DefaultWagonManager.java:471)

… 83 more

Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupException: Unable to lookup component ‘org.apache.maven.wagon.Wagondav’, it could not be created

at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:335)

at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:440)

at org.apache.maven.artifact.manager.DefaultWagonManager.getWagon(DefaultWagonManager.java:157)

… 84 more

Caused by: org.codehaus.plexus.component.factory.ComponentInstantiationException: Could not instanciate component: role: ‘org.apache.maven.wagon.Wagon’, implementation: ‘org.apache.maven.wagon.providers.webdav.WebDavWagon’, role hint: ‘dav’

at org.codehaus.plexus.component.factory.java.JavaComponentFactory.makeException(JavaComponentFactory.java:77)

at org.codehaus.plexus.component.factory.java.JavaComponentFactory.newInstance(JavaComponentFactory.java:62)

at org.codehaus.plexus.DefaultPlexusContainer.createComponentInstance(DefaultPlexusContainer.java:1464)

at org.codehaus.plexus.component.manager.AbstractComponentManager.createComponentInstance(AbstractComponentManager.java:93)

at org.codehaus.plexus.component.manager.PerLookupComponentManager.getComponent(PerLookupComponentManager.java:48)

at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:331)

… 86 more

Caused by: java.lang.NoClassDefFoundError: org/apache/webdav/lib/WebdavResource

at org.codehaus.plexus.component.factory.java.JavaComponentFactory.newInstance(JavaComponentFactory.java:44)

… 90 more

Caused by: java.lang.ClassNotFoundException: org.apache.webdav.lib.WebdavResource

at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)

at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255)

at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)

… 91 more

Sorry, this turned out to be my mistake, although the error message pointed me in the wrong direction. In the liquibase-runner project I had the following code, which of course made the webdav dependencies fail:

configurations.all {

transitive = false

}

Changed it to configurations.runtime and all is well.