Is there a way to specify a wagon (or something else) for remote maven repository in order to download artifact using a custom protocol (I already know how to upload/publish artifact using maven wagon , here I would like to download them using same protocol).
Something like:
dependencies {
wagonJars "my-maven-wagon:1.0.0"
}
repositories {
maven {
configuration = configurations.wagonJars
name 'My Snapshot Repo'
credentials {
username userName
password password
}
url 'myscheme://host/snapshot/'
}
}
I’d expect it to work, provided the wagon is implemented correctly.
Well I might be wrong but I don’t see what’s going on…
Here is my conf:
repositories {
mavenLocal()
}
configurations {
wagonJars
}
dependencies {
wagonJars "net.anzix.aws:s3-maven-wagon:3.3.4"
}
repositories {
maven {
configuration = configurations.wagonJars
name 'S3 Snapshot'
credentials {
username s3UserName
password s3Password
}
url 's3://s3-repo/snapshot/'
}
}
And here is the error:
> Unable to load Maven meta-data from s3://s3-repo/snapshot/com/exa/system/13.1-SNAPSHOT/maven-metadata.xml.
17:53:52.199 [ERROR] [org.gradle.BuildExceptionReporter]
> Scheme 's3' not registered.
17:53:52.200 [ERROR] [org.gradle.BuildExceptionReporter]
...
7:53:52.231 [ERROR] [org.gradle.BuildExceptionReporter] Caused by: java.lang.IllegalStateException: Scheme 's3' not registered.
17:53:52.231 [ERROR] [org.gradle.BuildExceptionReporter]
at org.apache.http.conn.scheme.SchemeRegistry.getScheme(SchemeRegistry.java:71)
17:53:52.231 [ERROR] [org.gradle.BuildExceptionReporter]
at org.apache.http.impl.conn.ProxySelectorRoutePlanner.determineRoute(ProxySelectorRoutePlanner.java:146)
17:53:52.231 [ERROR] [org.gradle.BuildExceptionReporter]
at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:788)
17:53:52.231 [ERROR] [org.gradle.BuildExceptionReporter]
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:414)
17:53:52.231 [ERROR] [org.gradle.BuildExceptionReporter]
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
17:53:52.231 [ERROR] [org.gradle.BuildExceptionReporter]
at org.apache.http.impl.client.DecompressingHttpClient.execute(DecompressingHttpClient.java:137)
17:53:52.232 [ERROR] [org.gradle.BuildExceptionReporter]
at org.apache.http.impl.client.DecompressingHttpClient.execute(DecompressingHttpClient.java:118)
17:53:52.232 [ERROR] [org.gradle.BuildExceptionReporter]
at org.gradle.api.internal.externalresource.transport.http.HttpClientHelper.performHttpRequest(HttpClientHelper.java:111)
17:53:52.232 [ERROR] [org.gradle.BuildExceptionReporter]
at org.gradle.api.internal.externalresource.transport.http.HttpClientHelper.executeGetOrHead(HttpClientHelper.java:87)
17:53:52.232 [ERROR] [org.gradle.BuildExceptionReporter]
at org.gradle.api.internal.externalresource.transport.http.HttpClientHelper.performRequest(HttpClientHelper.java:78)
17:53:52.232 [ERROR] [org.gradle.BuildExceptionReporter]
at org.gradle.api.internal.externalresource.transport.http.HttpClientHelper.performRawGet(HttpClientHelper.java:66)
17:53:52.232 [ERROR] [org.gradle.BuildExceptionReporter]
at org.gradle.api.internal.externalresource.transport.http.HttpClientHelper.performGet(HttpClientHelper.java:70)
17:53:52.232 [ERROR] [org.gradle.BuildExceptionReporter]
at org.gradle.api.internal.externalresource.transport.http.HttpResourceAccessor.getResource(HttpResourceAccessor.java:46)
17:53:52.232 [ERROR] [org.gradle.BuildExceptionReporter]
at org.gradle.api.internal.externalresource.transport.http.HttpResourceAccessor.getResource(HttpResourceAccessor.java:32)
17:53:52.233 [ERROR] [org.gradle.BuildExceptionReporter]
at org.gradle.api.internal.externalresource.transport.DefaultExternalResourceRepository.getResource(DefaultExternalResourceRepository.java:61)
17:53:52.233 [ERROR] [org.gradle.BuildExceptionReporter]
at org.gradle.api.internal.artifacts.repositories.resolver.MavenMetadataLoader.parseMavenMetadataInfo(MavenMetadataLoader.java:56)
17:53:52.233 [ERROR] [org.gradle.BuildExceptionReporter]
at org.gradle.api.internal.artifacts.repositories.resolver.MavenMetadataLoader.load(MavenMetadataLoader.java:46)
17:53:52.233 [ERROR] [org.gradle.BuildExceptionReporter]
... 119 more
You need to declare a repository for uploading, not downloading. See Interacting with Maven repositories in the Gradle User Guide.
Sorry, I thought you were trying to upload using a custom wagon. I don’t think you can specify a wagon for downloading.
Too bad 
From the gradle source, it seems that it is not supported… I can figure out why, but I was wondering if there is a workaround such as implementing a specific scheme for http client.
I could also update gradle in order to support custom transport…
Unfortunately, I’m not aware of a workaround. Maybe registering an URL schema would work, but I can’t tell.
Was anyone able to figure out how to use s3-based maven repositories in gradle? Thanks