Index: src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java =================================================================== --- src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java (revision 409747) +++ src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java (working copy) @@ -16,6 +16,8 @@ * limitations under the License. */ +import java.io.File; + import org.apache.maven.artifact.manager.WagonManager; import org.apache.maven.model.DistributionManagement; import org.apache.maven.model.Site; @@ -36,9 +38,18 @@ import org.apache.maven.wagon.observers.Debug; import org.apache.maven.wagon.proxy.ProxyInfo; import org.apache.maven.wagon.repository.Repository; +import org.codehaus.plexus.PlexusConstants; +import org.codehaus.plexus.PlexusContainer; +import org.codehaus.plexus.component.configurator.ComponentConfigurationException; +import org.codehaus.plexus.component.configurator.ComponentConfigurator; +import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException; +import org.codehaus.plexus.component.repository.exception.ComponentLookupException; +import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration; +import org.codehaus.plexus.context.Context; +import org.codehaus.plexus.context.ContextException; +import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; +import org.codehaus.plexus.util.xml.Xpp3Dom; -import java.io.File; - /** * Deploys website using scp/file protocol. * For scp protocol, website files are packaged into zip archive, @@ -52,8 +63,10 @@ * @goal deploy */ public class SiteDeployMojo - extends AbstractMojo + extends AbstractMojo implements Contextualizable { + private PlexusContainer container; + /** * Directory containing the generated project sites and report distributions. * @@ -129,6 +142,44 @@ throw new MojoExecutionException( "Unsupported protocol: '" + repository.getProtocol() + "'", e ); } + // TODO: this should use wagonManager.getConfiguredWagon() when maven-artifact-manager:2.1 is released + + Object configuration = settings.getServer( id ).getConfiguration(); + if ( configuration != null) + { + final XmlPlexusConfiguration xmlConf = new XmlPlexusConfiguration( (Xpp3Dom) configuration ); + ComponentConfigurator componentConfigurator = null; + try + { + componentConfigurator = (ComponentConfigurator) container.lookup( ComponentConfigurator.ROLE ); + componentConfigurator.configureComponent( wagon, xmlConf, container.getContainerRealm() ); + System.out.println( "done" ); + } + catch ( final ComponentLookupException e ) + { + throw new MojoExecutionException( "Unable to lookup wagon configurator for " + id + ". Wagon configuration cannot be applied.", e ); + } + catch ( ComponentConfigurationException e ) + { + throw new MojoExecutionException( "Unable to apply wagon configuration for " + id + ".", e ); + } + finally + { + if ( componentConfigurator != null ) + { + try + { + container.release( componentConfigurator ); + } + catch ( ComponentLifecycleException e ) + { + System.out.println( "Problem releasing configurator - ignoring: " + e.getMessage() ); + } + } + + } + } + if ( !wagon.supportsDirectoryCopy() ) { throw new MojoExecutionException( @@ -224,4 +275,10 @@ return proxyInfo; } + + public void contextualize( Context context ) + throws ContextException + { + container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); + } }