Skip to content

Commit

Permalink
Merge pull request #3470 from aloubyansky/3318
Browse files Browse the repository at this point in the history
Bootstrap Maven resolver: switch to Maven Wagon transporters
  • Loading branch information
aloubyansky authored Aug 9, 2019
2 parents 0d05af7 + 5439c15 commit 2f5b6c7
Show file tree
Hide file tree
Showing 6 changed files with 121 additions and 11 deletions.
6 changes: 6 additions & 0 deletions devtools/maven/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-bootstrap-core</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
Expand Down
10 changes: 7 additions & 3 deletions independent-projects/bootstrap/core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,17 @@
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-transport-file</artifactId>
<artifactId>maven-resolver-transport-wagon</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-transport-http</artifactId>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-http</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
</dependency>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package io.quarkus.bootstrap.resolver.maven;

import org.apache.maven.wagon.Wagon;
import org.eclipse.aether.transport.wagon.WagonProvider;

public class BootstrapWagonProvider implements WagonProvider {

@Override
public Wagon lookup(String roleHint) throws Exception {
String impl = null;
switch(roleHint) {
case "https":
case "http":
impl = "org.apache.maven.wagon.providers.http.HttpWagon";
break;
case "file":
impl = "org.apache.maven.wagon.providers.file.FileWagon";
break;
case "ftp":
impl = "org.apache.maven.wagon.providers.ftp.FtpWagon";
break;
case "ftps":
impl = "org.apache.maven.wagon.providers.ftp.FtpsWagon";
break;
case "ftph":
impl = "org.apache.maven.wagon.providers.ftp.FtpHttpWagon";
break;
case "scm":
impl = "org.apache.maven.wagon.providers.scm.ScmWagon";
break;
default:
throw new IllegalStateException("Not supported Wagon implementation hint " + roleHint);
}
final Class<?> cls = loadClass(impl, roleHint);
final Object wagon;
try {
wagon = cls.newInstance();
} catch(Throwable t) {
throw new IllegalStateException("Failed to instantiate Wagon impl " + impl, t);
}
return Wagon.class.cast(wagon);
}

@Override
public void release(Wagon wagon) {
}

private static Class<?> loadClass(String name, String protocol) {
try {
return Thread.currentThread().getContextClassLoader().loadClass(name);
} catch (ClassNotFoundException e) {
final StringBuilder buf = new StringBuilder();
buf.append("Failed to locate Wagon implementation ")
.append(name)
.append(" on the classpath for protocol ")
.append(protocol)
.append(", please add the ");
final String defaultWagonGA = getDefaultWagonGA(protocol);
if(defaultWagonGA == null) {
buf.append("corresponding classpath dependency to your project");
} else {
buf.append("desired version of ").append(defaultWagonGA).append(" as a classpath dependency to your project");
}
throw new IllegalStateException(buf.toString());
}
}

private static String getDefaultWagonGA(String protocol) {
switch(protocol) {
case "https":
case "http":
return "org.apache.maven.wagon:wagon-http or org.apache.maven.wagon:wagon-http-lightweight";
case "file":
return "org.apache.maven.wagon:wagon-file";
case "ftp":
case "ftps":
case "ftph":
return "org.apache.maven.wagon:wagon-ftp";
case "scm":
return "org.apache.maven.wagon:wagon-scm";
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@
import org.eclipse.aether.repository.RepositoryPolicy;
import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
import org.eclipse.aether.spi.connector.transport.TransporterFactory;
import org.eclipse.aether.transport.file.FileTransporterFactory;
import org.eclipse.aether.transport.http.HttpTransporterFactory;
import org.eclipse.aether.transport.wagon.WagonProvider;
import org.eclipse.aether.transport.wagon.WagonTransporterFactory;
import org.eclipse.aether.util.repository.AuthenticationBuilder;
import org.eclipse.aether.util.repository.DefaultAuthenticationSelector;
import org.eclipse.aether.util.repository.DefaultMirrorSelector;
Expand Down Expand Up @@ -152,8 +152,8 @@ public static RepositorySystem getRepositorySystem(boolean offline, WorkspaceMod
final DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
if(!offline) {
locator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class);
locator.addService(TransporterFactory.class, FileTransporterFactory.class);
locator.addService(TransporterFactory.class, HttpTransporterFactory.class);
locator.addService(TransporterFactory.class, WagonTransporterFactory.class);
locator.setServices(WagonProvider.class, new BootstrapWagonProvider());
}
locator.setServices(ModelBuilder.class, new MavenModelBuilder(wsModelResolver));
locator.setErrorHandler(new DefaultServiceLocator.ErrorHandler() {
Expand Down
14 changes: 10 additions & 4 deletions independent-projects/bootstrap/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
<maven-core.version>3.5.4</maven-core.version>
<maven-plugin-annotations.version>3.5.2</maven-plugin-annotations.version>
<maven-resolver.version>1.1.1</maven-resolver.version>
<maven-wagon.version>3.0.0</maven-wagon.version>
<nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>
</properties>
<modules>
Expand Down Expand Up @@ -112,13 +113,18 @@
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-transport-file</artifactId>
<artifactId>maven-resolver-transport-wagon</artifactId>
<version>${maven-resolver.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-transport-http</artifactId>
<version>${maven-resolver.version}</version>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
<version>${maven-wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-http</artifactId>
<version>${maven-wagon.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
Expand Down
10 changes: 10 additions & 0 deletions integration-tests/tika/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
Expand Down

0 comments on commit 2f5b6c7

Please sign in to comment.