diff --git a/dependency-check-maven/pom.xml b/dependency-check-maven/pom.xml index 43811b4ea..2ef8dd5b3 100644 --- a/dependency-check-maven/pom.xml +++ b/dependency-check-maven/pom.xml @@ -275,6 +275,11 @@ Copyright (c) 2013 Jeremy Long. All Rights Reserved. maven-plugin-api 3.0 + + org.apache.maven + maven-settings + 3.0 + org.apache.maven maven-core diff --git a/dependency-check-maven/src/main/java/org/owasp/dependencycheck/maven/DependencyCheckMojo.java b/dependency-check-maven/src/main/java/org/owasp/dependencycheck/maven/DependencyCheckMojo.java index cee0602e8..e312cd118 100644 --- a/dependency-check-maven/src/main/java/org/owasp/dependencycheck/maven/DependencyCheckMojo.java +++ b/dependency-check-maven/src/main/java/org/owasp/dependencycheck/maven/DependencyCheckMojo.java @@ -29,6 +29,7 @@ import java.util.Locale; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; + import org.apache.maven.artifact.Artifact; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.SinkFactory; @@ -44,6 +45,7 @@ import org.apache.maven.project.MavenProject; import org.apache.maven.reporting.MavenMultiPageReport; import org.apache.maven.reporting.MavenReport; import org.apache.maven.reporting.MavenReportException; +import org.apache.maven.settings.Proxy; import org.owasp.dependencycheck.Engine; import org.owasp.dependencycheck.data.nvdcve.CveDB; import org.owasp.dependencycheck.data.nvdcve.DatabaseException; @@ -147,27 +149,45 @@ public class DependencyCheckMojo extends AbstractMojo implements MavenMultiPageR private boolean externalReport = false; /** * The Proxy URL. + * @deprecated Please use mavenSettings instead */ @SuppressWarnings({"CanBeFinal", "FieldCanBeLocal"}) @Parameter(property = "proxyUrl", defaultValue = "", required = false) + @Deprecated private String proxyUrl = null; + + @SuppressWarnings({"CanBeFinal", "FieldCanBeLocal"}) + @Parameter(property = "mavenSettings", defaultValue = "${settings}", required = false) + private org.apache.maven.settings.Settings mavenSettings; + + @SuppressWarnings({"CanBeFinal", "FieldCanBeLocal"}) + @Parameter(property = "mavenSettingsProxyId", required = false) + private String mavenSettingsProxyId; + + /** * The Proxy Port. + * @deprecated Please use mavenSettings instead */ @SuppressWarnings({"CanBeFinal", "FieldCanBeLocal"}) @Parameter(property = "proxyPort", defaultValue = "", required = false) + @Deprecated private String proxyPort = null; /** * The Proxy username. + * @deprecated Please use mavenSettings instead */ @SuppressWarnings({"CanBeFinal", "FieldCanBeLocal"}) @Parameter(property = "proxyUsername", defaultValue = "", required = false) + @Deprecated private String proxyUsername = null; /** * The Proxy password. + * @deprecated Please use mavenSettings instead */ @SuppressWarnings({"CanBeFinal", "FieldCanBeLocal"}) @Parameter(property = "proxyPassword", defaultValue = "", required = false) + @Deprecated private String proxyPassword = null; /** * The Connection Timeout. @@ -721,6 +741,34 @@ public class DependencyCheckMojo extends AbstractMojo implements MavenMultiPageR } // + private String getMavenSettingsProxyUrl(Proxy proxy) { + return new StringBuilder(proxy.getProtocol()).append( "://" ).append(proxy.getHost()).toString(); + } + + private Proxy getMavenProxy(){ + if (mavenSettings!=null) { + List proxies = mavenSettings.getProxies(); + if ( proxies != null && proxies.size() > 0) { + if (mavenSettingsProxyId!=null) { + for ( Proxy proxy : proxies ) + { + if ( mavenSettingsProxyId.equalsIgnoreCase( proxy.getId() )) { + return proxy; + } + } + } + else if (proxies.size() == 1) { + return proxies.get(0); + } + else { + throw new IllegalStateException( "Ambigous proxy definition" ); + } + } + } + + return null; + } + /** * Takes the properties supplied and updates the dependency-check settings. Additionally, this sets the system * properties required to change the proxy url, port, and connection timeout. @@ -744,6 +792,19 @@ public class DependencyCheckMojo extends AbstractMojo implements MavenMultiPageR } Settings.setBoolean(Settings.KEYS.AUTO_UPDATE, autoUpdate); + + + Proxy proxy = getMavenProxy(); + if (proxy != null) { + Settings.setString(Settings.KEYS.PROXY_URL,getMavenSettingsProxyUrl(proxy)); + Settings.setString(Settings.KEYS.PROXY_PORT,Integer.toString(proxy.getPort())); + String userName = proxy.getUsername(); + String password = proxy.getPassword(); + if ( userName != null && password != null){ + Settings.setString(Settings.KEYS.PROXY_USERNAME, userName); + Settings.setString(Settings.KEYS.PROXY_PASSWORD, password); + } + } if (proxyUrl != null && !proxyUrl.isEmpty()) { Settings.setString(Settings.KEYS.PROXY_URL, proxyUrl);