You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2020/05/26 13:42:39 UTC

[maven-site-plugin] branch MSITE-757 updated (4ac5557 -> b32a0ee)

This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a change to branch MSITE-757
in repository https://gitbox.apache.org/repos/asf/maven-site-plugin.git.


    omit 4ac5557  [MSITE-757] More cleanup after upgrade to Maven 3.0.5
     add f37789b  [MSITE-757] remove Maven 2 support (#24)
     add 4adfffe  [MSITE-845] drop Maven 2 mention (#26)
     add 95ddb9e  docs: use https (#28)
     new b32a0ee  [MSITE-757] More cleanup after upgrade to Maven 3.0.5

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (4ac5557)
            \
             N -- N -- N   refs/heads/MSITE-757 (b32a0ee)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 pom.xml                                            |  6 --
 .../plugins/site/deploy/AbstractDeployMojo.java    | 87 ++++++++++++++++++----
 .../site/render/AbstractSiteRenderingMojo.java     |  3 +-
 .../site/render/ReportDocumentRenderer.java        | 49 +-----------
 .../apt/examples/adding-deploy-protocol.apt.vm     |  3 +-
 5 files changed, 77 insertions(+), 71 deletions(-)


[maven-site-plugin] 01/01: [MSITE-757] More cleanup after upgrade to Maven 3.0.5

Posted by sl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch MSITE-757
in repository https://gitbox.apache.org/repos/asf/maven-site-plugin.git

commit b32a0ee48df70fafceecb2f21a589238279cdd3d
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Tue May 26 15:42:16 2020 +0200

    [MSITE-757] More cleanup after upgrade to Maven 3.0.5
---
 pom.xml                                            |   2 +-
 .../maven/plugins/site/AbstractSiteMojo.java       |  28 +-
 .../plugins/site/deploy/AbstractDeployMojo.java    |   5 +-
 .../site/deploy/wagon/BugFixedRepository.java      | 306 -------------
 .../maven/plugins/site/deploy/wagon/PathUtils.java | 501 ---------------------
 .../site/render/AbstractSiteRenderingMojo.java     |  46 +-
 6 files changed, 22 insertions(+), 866 deletions(-)

diff --git a/pom.xml b/pom.xml
index af2bae6..bd72020 100644
--- a/pom.xml
+++ b/pom.xml
@@ -195,7 +195,7 @@ under the License.
   </distributionManagement>
 
   <properties>
-    <mavenVersion>3.0</mavenVersion>
+    <mavenVersion>3.0.5</mavenVersion>
     <javaVersion>7</javaVersion>
     <!-- for dependencies -->
     <doxiaVersion>1.9.1</doxiaVersion>
diff --git a/src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java b/src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java
index b759cfd..15a18ed 100644
--- a/src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java
+++ b/src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java
@@ -25,13 +25,11 @@ import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.rtinfo.RuntimeInformation;
 import org.codehaus.plexus.i18n.I18N;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.util.List;
 import java.util.Locale;
-import java.util.Properties;
 
 /**
  * Base class for site mojos.
@@ -88,25 +86,13 @@ public abstract class AbstractSiteMojo
     @Parameter( defaultValue = "${reactorProjects}", required = true, readonly = true )
     protected List<MavenProject> reactorProjects;
 
-    protected static String getMavenVersion()
-    {
-        // This relies on the fact that MavenProject is the in core classloader
-        // and that the core classloader is for the maven-core artifact
-        // and that should have a pom.properties file
-        // if this ever changes, we will have to revisit this code.
-        final Properties properties = new Properties();
-        final String corePomProperties = "META-INF/maven/org.apache.maven/maven-core/pom.properties";
-
-        try ( InputStream in = MavenProject.class.getClassLoader().getResourceAsStream( corePomProperties ) )
-        {
-            properties.load( in );
-        }
-        catch ( IOException ioe )
-        {
-            return "";
-        }
+    @Component
+    protected RuntimeInformation runtimeInformation;
 
-        return properties.getProperty( "version" ).trim();
+    @Deprecated
+    protected String getMavenVersion()
+    {
+        return runtimeInformation.getMavenVersion();
     }
 
     protected List<Locale> getLocales()
diff --git a/src/main/java/org/apache/maven/plugins/site/deploy/AbstractDeployMojo.java b/src/main/java/org/apache/maven/plugins/site/deploy/AbstractDeployMojo.java
index bc53408..415e59e 100644
--- a/src/main/java/org/apache/maven/plugins/site/deploy/AbstractDeployMojo.java
+++ b/src/main/java/org/apache/maven/plugins/site/deploy/AbstractDeployMojo.java
@@ -30,7 +30,6 @@ import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.site.AbstractSiteMojo;
-import org.apache.maven.plugins.site.deploy.wagon.BugFixedRepository;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
@@ -129,7 +128,7 @@ public abstract class AbstractDeployMojo
     /**
      */
     @Component
-    private WagonManager wagonManager;
+    private WagonManager wagonManager; // maven-compat
 
     /**
      * The current user system settings for use in Maven.
@@ -167,7 +166,7 @@ public abstract class AbstractDeployMojo
             return;
         }
 
-        deployTo( new BugFixedRepository( getDeploySite().getId(), getDeploySite().getUrl() ) );
+        deployTo( new Repository( getDeploySite().getId(), getDeploySite().getUrl() ) );
     }
 
     /**
diff --git a/src/main/java/org/apache/maven/plugins/site/deploy/wagon/BugFixedRepository.java b/src/main/java/org/apache/maven/plugins/site/deploy/wagon/BugFixedRepository.java
deleted file mode 100644
index 4290299..0000000
--- a/src/main/java/org/apache/maven/plugins/site/deploy/wagon/BugFixedRepository.java
+++ /dev/null
@@ -1,306 +0,0 @@
-package org.apache.maven.plugins.site.deploy.wagon;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.maven.wagon.WagonConstants;
-import org.apache.maven.wagon.repository.RepositoryPermissions;
-import org.codehaus.plexus.util.StringUtils;
-
-import java.util.Properties;
-
-/**
- * This class is an abstraction of the location from/to resources
- * can be transfered.
- *
- * <strong>Note: </strong> This is a copy of a file from Wagon. It was copied here to be able to work around WAGON-307.
- * This class can be removed when the prerequisite Maven version uses wagon-provider-api:1.0-beta-7,
- * ie Maven &gt;= 3.0.1.
- *
- * @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
- *
- * @todo [BP] some things are specific to certain wagons (eg key stuff in authInfo, permissions)
- */
-public class BugFixedRepository
-    extends org.apache.maven.wagon.repository.Repository
-{
-    private static final long serialVersionUID = 1312227676322136247L;
-
-    private String id;
-
-    private String name;
-
-    private String host;
-
-    private int port = WagonConstants.UNKNOWN_PORT;
-
-    private String basedir;
-
-    private String protocol;
-
-    private String url;
-
-    private RepositoryPermissions permissions;
-
-    /**
-     * Properties influencing wagon behaviour
-     * which are very specific to particular wagon.
-     */
-    private Properties parameters = new Properties();
-
-    // Username/password are sometimes encoded in the URL
-    private String username = null;
-
-    private String password = null;
-
-    public BugFixedRepository( String id, String url )
-    {
-        if ( id == null )
-        {
-            throw new NullPointerException( "id can not be null" );
-        }
-        
-        setId( id );
-
-        if ( url == null )
-        {
-            throw new NullPointerException( "url can not be null" );
-        }
-        
-        setUrl( url );
-    }
-
-    public String getId()
-    {
-        return id;
-    }
-
-    public void setId( String id )
-    {
-        this.id = id;
-    }
-
-    /**
-     * Retrieve the base directory of the repository. This is derived from the full repository URL, and
-     * contains the entire path component.
-     * 
-     * @return the base directory
-     */
-    public String getBasedir()
-    {
-        return basedir;
-    }
-
-    public void setBasedir( String basedir )
-    {
-        this.basedir = basedir;
-    }
-
-    public void setName( String name )
-    {
-        this.name = name;
-    }
-
-    public int getPort()
-    {
-        return port;
-    }
-
-    public void setPort( int port )
-    {
-        this.port = port;
-    }
-
-    public void setUrl( String url )
-    {
-        this.url = url;
-
-        // TODO [BP]: refactor out the PathUtils URL stuff into a class like java.net.URL, so you only parse once
-        //  can't use URL class as is because it won't recognise our protocols, though perhaps we could attempt to
-        //  register handlers for scp, etc?
-
-        this.protocol = PathUtils.protocol( url );
-
-        this.host = PathUtils.host( url );
-
-        this.port = PathUtils.port( url );
-
-        this.basedir = PathUtils.basedir( url );
-
-        String username = PathUtils.user( url );
-        this.username = username;
-
-        if ( username != null )
-        {
-            String password = PathUtils.password( url );
-
-            if ( password != null )
-            {
-                this.password = password;
-
-                username += ":" + password;
-            }
-
-            username += "@";
-
-            int index = url.indexOf( username );
-            this.url = url.substring( 0, index ) + url.substring( index + username.length() );
-        }
-    }
-
-    public String getUrl()
-    {
-        if ( url != null )
-        {
-            return url;
-        }
-
-        StringBuilder sb = new StringBuilder();
-
-        sb.append( protocol );
-
-        sb.append( "://" );
-
-        sb.append( host );
-
-        if ( port != WagonConstants.UNKNOWN_PORT )
-        {
-            sb.append( ":" );
-
-            sb.append( port );
-        }
-
-        sb.append( basedir );
-
-        return sb.toString();
-    }
-
-    public String getHost()
-    {
-        if ( host == null )
-        {
-            return "localhost";
-        }
-        return host;
-    }
-
-    public String getName()
-    {
-        if ( name == null )
-        {
-            return getId();
-        }
-        return name;
-    }
-
-    public String toString()
-    {
-        StringBuilder sb = new StringBuilder();
-
-        sb.append( "Repository[" );
-
-        if ( StringUtils.isNotEmpty( getName() ) )
-        {
-            sb.append( getName() ).append( "|" );
-        }
-
-        sb.append( getUrl() );
-        sb.append( "]" );
-
-        return sb.toString();
-    }
-
-    public String getProtocol()
-    {
-        return protocol;
-    }
-
-    public RepositoryPermissions getPermissions()
-    {
-        return permissions;
-    }
-
-    public void setPermissions( RepositoryPermissions permissions )
-    {
-        this.permissions = permissions;
-    }
-
-    public String getParameter( String key )
-    {
-        return parameters.getProperty( key );
-    }
-
-    public void setParameters( Properties parameters )
-    {
-        this.parameters = parameters;
-    }
-
-    public int hashCode()
-    {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ( ( id == null ) ? 0 : id.hashCode() );
-        return result;
-    }
-
-    public boolean equals( Object obj )
-    {
-        if ( this == obj )
-        {
-            return true;
-        }
-        if ( obj == null )
-        {
-            return false;
-        }
-        if ( getClass() != obj.getClass() )
-        {
-            return false;
-        }
-        final BugFixedRepository other = (BugFixedRepository) obj;
-        if ( id == null )
-        {
-            if ( other.id != null )
-            {
-                return false;
-            }
-        }
-        else if ( !id.equals( other.id ) )
-        {
-            return false;
-        }
-        return true;
-    }
-
-    public String getUsername()
-    {
-        return username;
-    }
-
-    public String getPassword()
-    {
-        return password;
-    }
-
-    public void setProtocol( String protocol )
-    {
-        this.protocol = protocol;
-    }
-
-}
diff --git a/src/main/java/org/apache/maven/plugins/site/deploy/wagon/PathUtils.java b/src/main/java/org/apache/maven/plugins/site/deploy/wagon/PathUtils.java
deleted file mode 100644
index 089210f..0000000
--- a/src/main/java/org/apache/maven/plugins/site/deploy/wagon/PathUtils.java
+++ /dev/null
@@ -1,501 +0,0 @@
-package org.apache.maven.plugins.site.deploy.wagon;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.maven.wagon.WagonConstants;
-
-import java.io.File;
-import java.util.StringTokenizer;
-
-/**
- * Various path (URL) manipulation routines.
- *
- * <strong>Note: </strong> This is a copy of a file from Wagon. It was copied here to be able to work around WAGON-307.
- * This class can be removed when the prerequisite Maven version uses wagon-provider-api:1.0-beta-7,
- * ie Maven &gt;= 3.0.1.
- *
- * @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
- *
- */
-public final class PathUtils
-{
-    private PathUtils()
-    {
-        // no op
-    }
-    
-    /**
-     * Returns the directory path portion of a file specification string.
-     * Matches the equally named unix command.
-     *
-     * @return The directory portion excluding the ending file separator.
-     */
-    public static String dirname( final String path )
-    {
-        final int i = path.lastIndexOf( '/' );
-
-        return ( ( i >= 0 ) ? path.substring( 0, i ) : "" );
-    }
-
-    /**
-     * Returns the filename portion of a file specification string.
-     *
-     * @return The filename string with extension.
-     */
-    public static String filename( final String path )
-    {
-        final int i = path.lastIndexOf( '/' );
-        return ( ( i >= 0 ) ? path.substring( i + 1 ) : path );
-    }
-
-    public static String[] dirnames( final String path )
-    {
-        final String dirname = PathUtils.dirname( path );
-        return split( dirname, "/", -1 );
-
-    }
-
-    private static String[] split( final String str, final String separator, final int max )
-    {
-        final StringTokenizer tok;
-
-        if ( separator == null )
-        {
-            // Null separator means we're using StringTokenizer's default
-            // delimiter, which comprises all whitespace characters.
-            tok = new StringTokenizer( str );
-        }
-        else
-        {
-            tok = new StringTokenizer( str, separator );
-        }
-
-        int listSize = tok.countTokens();
-
-        if ( max > 0 && listSize > max )
-        {
-            listSize = max;
-        }
-
-        final String[] list = new String[listSize];
-
-        int i = 0;
-
-        int lastTokenBegin;
-        int lastTokenEnd = 0;
-
-        while ( tok.hasMoreTokens() )
-        {
-            if ( max > 0 && i == listSize - 1 )
-            {
-                // In the situation where we hit the max yet have
-                // tokens left over in our input, the last list
-                // element gets all remaining text.
-                final String endToken = tok.nextToken();
-
-                lastTokenBegin = str.indexOf( endToken, lastTokenEnd );
-
-                list[i] = str.substring( lastTokenBegin );
-
-                break;
-
-            }
-            else
-            {
-                list[i] = tok.nextToken();
-
-                lastTokenBegin = str.indexOf( list[i], lastTokenEnd );
-
-                lastTokenEnd = lastTokenBegin + list[i].length();
-            }
-
-            i++;
-        }
-        return list;
-    }
-
-    /**
-     * Return the host name (Removes protocol and path from the URL) E.g: for input
-     * <code>http://www.codehause.org</code> this method will return <code>www.apache.org</code>
-     *
-     * @param url the url
-     * @return the host name
-     */
-    public static String host( final String url )
-    {
-        String authorization = authorization( url );
-        int index = authorization.indexOf( '@' );
-        if ( index >= 0 )
-        {
-            return authorization.substring( index + 1 );
-        }
-        else
-        {
-            return authorization;
-        }
-    }
-
-    /**
-     * This was changed from private to package local so that it can be unit tested.
-     */
-    static String authorization( final String url )
-    {
-        if ( url == null )
-        {
-            return "localhost";
-        }
-
-        final String protocol = PathUtils.protocol( url );
-
-        if ( protocol == null || protocol.equalsIgnoreCase( "file" ) )
-        {
-            return "localhost";
-        }
-
-        String host = url;
-        if ( protocol.equalsIgnoreCase( "scm" ) )
-        {
-            // skip over type
-            host = host.substring( host.indexOf( ':', 4 ) + 1 ).trim();
-        }
-
-        // skip over protocol
-        host = host.substring( host.indexOf( ':' ) + 1 ).trim();
-        if ( host.startsWith( "//" ) )
-        {
-            host = host.substring( 2 );
-        }
-
-        int pos = host.indexOf( '/' );
-
-        if ( pos > 0 )
-        {
-            host = host.substring( 0, pos );
-        }
-
-        pos = host.indexOf( '@' );
-
-        if ( pos > 0 )
-        {
-            pos = host.indexOf( ':', pos );
-        }
-        else
-        {
-            pos = host.indexOf( ':' );
-        }
-
-        if ( pos > 0 )
-        {
-            host = host.substring( 0, pos );
-        }
-        return host;
-    }
-
-    /**
-     * /**
-     * Return the protocol name.
-     * <br/>
-     * E.g: for input
-     * <code>http://www.codehause.org</code> this method will return <code>http</code>
-     *
-     * @param url the url
-     * @return the host name
-     */
-    public static String protocol( final String url )
-    {
-        final int pos = url.indexOf( ':' );
-
-        if ( pos == -1 )
-        {
-            return "";
-        }
-        return url.substring( 0, pos ).trim();
-    }
-
-    /**
-     * @param url
-     * @return the port or {@link WagonConstants#UNKNOWN_PORT} if not existent
-     */
-    public static int port( String url )
-    {
-
-        final String protocol = PathUtils.protocol( url );
-
-        if ( protocol == null || protocol.equalsIgnoreCase( "file" ) )
-        {
-            return WagonConstants.UNKNOWN_PORT;
-        }
-
-        final String authorization = PathUtils.authorization( url );
-
-        if ( authorization == null )
-        {
-            return WagonConstants.UNKNOWN_PORT;
-        }
-
-        if ( protocol.equalsIgnoreCase( "scm" ) )
-        {
-            // skip over type
-            url = url.substring( url.indexOf( ':', 4 ) + 1 ).trim();
-        }
-
-        if ( url.regionMatches( true, 0, "file:", 0, 5 ) || url.regionMatches( true, 0, "local:", 0, 6 ) )
-        {
-            return WagonConstants.UNKNOWN_PORT;
-        }
-
-        // skip over protocol
-        url = url.substring( url.indexOf( ':' ) + 1 ).trim();
-        if ( url.startsWith( "//" ) )
-        {
-            url = url.substring( 2 );
-        }
-
-        int start = authorization.length();
-
-        if ( url.length() > start && url.charAt( start ) == ':' )
-        {
-            int end = url.indexOf( '/', start );
-
-            if ( end == start + 1 )
-            {
-                // it is :/
-                return WagonConstants.UNKNOWN_PORT;
-            }
-
-            if ( end == -1 )
-            {
-                end = url.length();
-            }
-
-            return Integer.parseInt( url.substring( start + 1, end ) );
-        }
-        else
-        {
-            return WagonConstants.UNKNOWN_PORT;
-        }
-
-    }
-
-    /**
-     * Derive the path portion of the given URL.
-     * 
-     * @param url the repository URL
-     * @return the basedir of the repository
-     * @todo need to URL decode for spaces?
-     */
-    public static String basedir( String url )
-    {
-        String protocol = PathUtils.protocol( url );
-
-        String retValue = null;
-
-        if ( protocol.equalsIgnoreCase( "scm" ) )
-        {
-            // skip over SCM bits
-            if ( url.regionMatches( true, 0, "scm:svn:", 0, 8 ) )
-            {
-                url = url.substring( url.indexOf( ':', 4 ) + 1 );
-                protocol = PathUtils.protocol( url );
-            }
-        }
-
-        if ( protocol.equalsIgnoreCase( "file" ) )
-        {
-            retValue = url.substring( protocol.length() + 1 );
-            retValue = decode( retValue );
-            // special case: if omitted // on protocol, keep path as is
-            if ( retValue.startsWith( "//" ) )
-            {
-                retValue = retValue.substring( 2 );
-
-                if ( retValue.length() >= 2 && ( retValue.charAt( 1 ) == '|' || retValue.charAt( 1 ) == ':' ) )
-                {
-                    // special case: if there is a windows drive letter, then keep the original return value
-                    retValue = retValue.charAt( 0 ) + ":" + retValue.substring( 2 );
-                }
-                else
-                {
-                    // Now we expect the host
-                    int index = retValue.indexOf( '/' );
-                    if ( index >= 0 )
-                    {
-                        retValue = retValue.substring( index + 1 );
-                    }
-
-                    // special case: if there is a windows drive letter, then keep the original return value
-                    if ( retValue.length() >= 2 && ( retValue.charAt( 1 ) == '|' || retValue.charAt( 1 ) == ':' ) )
-                    {
-                        retValue = retValue.charAt( 0 ) + ":" + retValue.substring( 2 );
-                    }
-                    else if ( index >= 0 )
-                    {
-                        // leading / was previously stripped
-                        retValue = "/" + retValue;
-                    }
-                }
-            }
-
-            // special case: if there is a windows drive letter using |, switch to :
-            if ( retValue.length() >= 2 && retValue.charAt( 1 ) == '|' )
-            {
-                retValue = retValue.charAt( 0 ) + ":" + retValue.substring( 2 );
-            }
-        }
-        else
-        {
-            final String authorization = PathUtils.authorization( url );
-
-            final int port = PathUtils.port( url );
-
-            int pos = 0;
-
-            if ( protocol.equalsIgnoreCase( "scm" ) )
-            {
-                pos = url.indexOf( ':', 4 ) + 1;
-                pos = url.indexOf( ':', pos ) + 1;
-            }
-            else
-            {
-                int index = url.indexOf( "://" );
-                if ( index != -1 )
-                {
-                    pos = index + 3;
-                }
-            }
-
-            pos += authorization.length();
-
-            if ( port != WagonConstants.UNKNOWN_PORT )
-            {
-                pos = pos + Integer.toString( port ).length() + 1;
-            }
-
-            if ( url.length() > pos )
-            {
-                retValue = url.substring( pos );
-                if ( retValue.startsWith( ":" ) )
-                {
-                    // this is for :/ after the host
-                    retValue = retValue.substring( 1 );
-                }
-
-                // one module may be allowed in the path in CVS
-                retValue = retValue.replace( ':', '/' );
-            }
-        }
-
-        if ( retValue == null )
-        {
-            retValue = "/";
-        }
-        return retValue.trim();
-    }
-
-    /**
-     * Decodes the specified (portion of a) URL. <strong>Note:</strong> This decoder assumes that ISO-8859-1 is used to
-     * convert URL-encoded bytes to characters.
-     * 
-     * @param url The URL to decode, may be <code>null</code>.
-     * @return The decoded URL or <code>null</code> if the input was <code>null</code>.
-     */
-    private static String decode( String url )
-    {
-        String decoded = url;
-        if ( url != null )
-        {
-            int pos = -1;
-            while ( ( pos = decoded.indexOf( '%', pos + 1 ) ) >= 0 )
-            {
-                if ( pos + 2 < decoded.length() )
-                {
-                    String hexStr = decoded.substring( pos + 1, pos + 3 );
-                    char ch = (char) Integer.parseInt( hexStr, 16 );
-                    decoded = decoded.substring( 0, pos ) + ch + decoded.substring( pos + 3 );
-                }
-            }
-        }
-        return decoded;
-    }
-
-    public static String user( String url )
-    {
-        String host = authorization( url );
-        int index = host.indexOf( '@' );
-        if ( index > 0 )
-        {
-            String userInfo = host.substring( 0, index );
-            index = userInfo.indexOf( ':' );
-            if ( index > 0 )
-            {
-                return userInfo.substring( 0, index );
-            }
-            else if ( index < 0 )
-            {
-                return userInfo;
-            }
-        }
-        return null;
-    }
-
-    public static String password( String url )
-    {
-        String host = authorization( url );
-        int index = host.indexOf( '@' );
-        if ( index > 0 )
-        {
-            String userInfo = host.substring( 0, index );
-            index = userInfo.indexOf( ':' );
-            if ( index >= 0 )
-            {
-                return userInfo.substring( index + 1 );
-            }
-        }
-        return null;
-    }
-
-    // TODO: move to plexus-utils or use something appropriate from there
-    public static String toRelative( File basedir, String absolutePath )
-    {
-        String relative;
-
-        absolutePath = absolutePath.replace( '\\', '/' );
-        String basedirPath = basedir.getAbsolutePath().replace( '\\', '/' );
-
-        if ( absolutePath.startsWith( basedirPath ) )
-        {
-            relative = absolutePath.substring( basedirPath.length() );
-            if ( relative.startsWith( "/" ) )
-            {
-                relative = relative.substring( 1 );
-            }
-            if ( relative.length() <= 0 )
-            {
-                relative = ".";
-            }
-        }
-        else
-        {
-            relative = absolutePath;
-        }
-
-        return relative;
-    }
-}
diff --git a/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java b/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java
index f72154f..ccb2efc 100644
--- a/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java
+++ b/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java
@@ -42,12 +42,6 @@ import org.apache.maven.reporting.MavenReport;
 import org.apache.maven.reporting.exec.MavenReportExecution;
 import org.apache.maven.reporting.exec.MavenReportExecutor;
 import org.apache.maven.reporting.exec.MavenReportExecutorRequest;
-import org.codehaus.plexus.PlexusConstants;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-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.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
 
@@ -70,8 +64,7 @@ import static org.apache.maven.shared.utils.logging.MessageUtils.buffer;
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  *
  */
-public abstract class AbstractSiteRenderingMojo
-    extends AbstractSiteDescriptorMojo implements Contextualizable
+public abstract class AbstractSiteRenderingMojo extends AbstractSiteDescriptorMojo
 {
     /**
      * Module type exclusion mappings
@@ -156,8 +149,6 @@ public abstract class AbstractSiteRenderingMojo
     @Parameter( defaultValue = "${project.reporting}", readonly = true )
     private Reporting reporting;
 
-    private PlexusContainer container;
-
     /**
      * Whether to generate the summary page for project reports: project-info.html.
      *
@@ -182,6 +173,9 @@ public abstract class AbstractSiteRenderingMojo
     @Parameter( property = "outputEncoding", defaultValue = "${project.reporting.outputEncoding}" )
     private String outputEncoding;
 
+    @Component
+    protected MavenReportExecutor mavenReportExecutor;
+
     /**
      * Gets the input files encoding.
      *
@@ -211,13 +205,6 @@ public abstract class AbstractSiteRenderingMojo
     @Parameter
     private boolean saveProcessedContent;
 
-    /** {@inheritDoc} */
-    public void contextualize( Context context )
-        throws ContextException
-    {
-        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
-    }
-
     protected void checkInputEncoding()
     {
         if ( StringUtils.isEmpty( inputEncoding ) )
@@ -236,27 +223,18 @@ public abstract class AbstractSiteRenderingMojo
         mavenReportExecutorRequest.setProject( project );
         mavenReportExecutorRequest.setReportPlugins( getReportingPlugins() );
 
-        try
-        {
-            MavenReportExecutor mavenReportExecutor = container.lookup( MavenReportExecutor.class );
+        List<MavenReportExecution> allReports = mavenReportExecutor.buildMavenReports( mavenReportExecutorRequest );
 
-            List<MavenReportExecution> allReports = mavenReportExecutor.buildMavenReports( mavenReportExecutorRequest );
-
-            // filter out reports that can't be generated
-            List<MavenReportExecution> reportExecutions = new ArrayList<>( allReports.size() );
-            for ( MavenReportExecution exec : allReports )
+        // filter out reports that can't be generated
+        List<MavenReportExecution> reportExecutions = new ArrayList<>( allReports.size() );
+        for ( MavenReportExecution exec : allReports )
+        {
+            if ( exec.canGenerateReport() )
             {
-                if ( exec.canGenerateReport() )
-                {
-                    reportExecutions.add( exec );
-                }
+                reportExecutions.add( exec );
             }
-            return reportExecutions;
-        }
-        catch ( ComponentLookupException e )
-        {
-            throw new MojoExecutionException( "could not get MavenReportExecutor component", e );
         }
+        return reportExecutions;
     }
 
     /**