diff --git a/devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java b/devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java index df61b6767de97..026ce59e2131c 100644 --- a/devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java +++ b/devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java @@ -36,6 +36,7 @@ import org.apache.maven.project.DefaultProjectBuildingRequest; import org.apache.maven.project.MavenProject; import org.apache.maven.project.ProjectBuilder; +import org.apache.maven.settings.Proxy; import org.eclipse.aether.RepositorySystem; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.repository.RemoteRepository; @@ -270,6 +271,8 @@ private void createMavenWrapper(File createdPomFile, Properties props) { newExecutionRequest, session.getResult()); newSession.setCurrentProject(newProject); + setProxySystemPropertiesFromSession(); + executeMojo( plugin( groupId("io.takari"), @@ -288,6 +291,27 @@ private void createMavenWrapper(File createdPomFile, Properties props) { } } + private void setProxySystemPropertiesFromSession() { + List proxiesFromSession = session.getRequest().getProxies(); + // - takari maven uses https to download the maven wrapper + // - don't do anything if proxy system property is already set + if (!proxiesFromSession.isEmpty() && System.getProperty("https.proxyHost") == null) { + + // use the first active proxy for setting the system properties + proxiesFromSession.stream() + .filter(Proxy::isActive) + .findFirst() + .ifPresent(proxy -> { + // note: a http proxy _is_ usable as https.proxyHost + System.setProperty("https.proxyHost", proxy.getHost()); + System.setProperty("https.proxyPort", String.valueOf(proxy.getPort())); + if (proxy.getNonProxyHosts() != null) { + System.setProperty("http.nonProxyHosts", proxy.getNonProxyHosts()); + } + }); + } + } + private void askTheUserForMissingValues() throws MojoExecutionException { // If the user has disabled the interactive mode or if the user has specified the artifactId, disable the