Index: src/main/java/org/apache/maven/plugin/javadoc/JavadocUtil.java =================================================================== --- src/main/java/org/apache/maven/plugin/javadoc/JavadocUtil.java (revision 800719) +++ src/main/java/org/apache/maven/plugin/javadoc/JavadocUtil.java (working copy) @@ -66,6 +66,8 @@ import org.apache.maven.shared.invoker.Invoker; import org.apache.maven.shared.invoker.MavenInvocationException; import org.apache.maven.shared.invoker.PrintStreamHandler; +import org.apache.maven.wagon.proxy.ProxyInfo; +import org.apache.maven.wagon.proxy.ProxyUtils; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.ReaderFactory; @@ -737,26 +739,32 @@ if ( activeProxy != null ) { - String proxyHost = settings.getActiveProxy().getHost(); - int proxyPort = settings.getActiveProxy().getPort(); - - String proxyUser = settings.getActiveProxy().getUsername(); - String proxyPass = settings.getActiveProxy().getPassword(); - - if ( StringUtils.isNotEmpty( proxyHost ) ) - { - httpClient.getHostConfiguration().setProxy( proxyHost, proxyPort ); - } - - if ( StringUtils.isNotEmpty( proxyUser ) ) - { - AuthScope authScope = - new AuthScope( AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, - AuthScope.ANY_SCHEME ); - UsernamePasswordCredentials usernamePasswordCredentials = - new UsernamePasswordCredentials( proxyUser, proxyPass ); - httpClient.getState().setProxyCredentials( authScope, usernamePasswordCredentials ); - } + ProxyInfo proxyInfo = new ProxyInfo(); + proxyInfo.setNonProxyHosts( activeProxy.getNonProxyHosts() ); + + if ( !ProxyUtils.validateNonProxyHosts(proxyInfo, url.getHost()) ) + { + String proxyHost = settings.getActiveProxy().getHost(); + int proxyPort = settings.getActiveProxy().getPort(); + + String proxyUser = settings.getActiveProxy().getUsername(); + String proxyPass = settings.getActiveProxy().getPassword(); + + if ( StringUtils.isNotEmpty( proxyHost ) ) + { + httpClient.getHostConfiguration().setProxy( proxyHost, proxyPort ); + } + + if ( StringUtils.isNotEmpty( proxyUser ) ) + { + AuthScope authScope = + new AuthScope( AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, + AuthScope.ANY_SCHEME ); + UsernamePasswordCredentials usernamePasswordCredentials = + new UsernamePasswordCredentials( proxyUser, proxyPass ); + httpClient.getState().setProxyCredentials( authScope, usernamePasswordCredentials ); + } + } } } } Index: src/test/java/org/apache/maven/plugin/javadoc/JavadocUtilTest.java =================================================================== --- src/test/java/org/apache/maven/plugin/javadoc/JavadocUtilTest.java (revision 800745) +++ src/test/java/org/apache/maven/plugin/javadoc/JavadocUtilTest.java (working copy) @@ -24,6 +24,7 @@ import java.io.IOException; import java.net.SocketTimeoutException; import java.net.URL; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -445,6 +446,56 @@ } } } + + /** + * Method to test fetchURL() with nonproxyhosts option + * + * @throws Exception if any + */ + public void testFetchNonProxyHostsURL() + throws Exception + { + URL url = new URL( "http://maven.apache.org/plugins/maven-javadoc-plugin/apidocs/package-list" ); + String nonProxyHosts = "maven.apache.org"; + String host = "proxy"; + int port = 8080; + String protocol = "http"; + + try + { + Settings settings = new Settings(); + Proxy proxy = new Proxy(); + proxy.setActive( true ); + proxy.setHost( host ); + proxy.setPort( port ); + proxy.setProtocol( protocol ); + proxy.setNonProxyHosts( nonProxyHosts ); + settings.addProxy( proxy ); + JavadocUtil.fetchURL( settings, url ); + assertTrue( false ); + } + catch ( UnknownHostException e ) + { + assertTrue( true ); + } + + try + { + Settings settings = new Settings(); + Proxy proxy = new Proxy(); + proxy.setActive( true ); + proxy.setHost( host ); + proxy.setPort( port ); + proxy.setProtocol( protocol ); + settings.addProxy( proxy ); + JavadocUtil.fetchURL( settings, url ); + assertTrue( true ); + } + catch ( IOException e ) + { + assertTrue( false ); + } + } /** * Method to test copyJavadocResources()