You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by lt...@apache.org on 2011/01/04 15:12:56 UTC

svn commit: r1055047 - in /maven/plugins/trunk/maven-site-plugin/src: it/MSITE-304/ main/java/org/apache/maven/plugins/site/

Author: ltheussl
Date: Tue Jan  4 14:12:55 2011
New Revision: 1055047

URL: http://svn.apache.org/viewvc?rev=1055047&view=rev
Log:
[MSITE-533] make site:stage a local file deploy

Modified:
    maven/plugins/trunk/maven-site-plugin/src/it/MSITE-304/goals.txt
    maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java
    maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java
    maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageMojo.java

Modified: maven/plugins/trunk/maven-site-plugin/src/it/MSITE-304/goals.txt
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/it/MSITE-304/goals.txt?rev=1055047&r1=1055046&r2=1055047&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/it/MSITE-304/goals.txt (original)
+++ maven/plugins/trunk/maven-site-plugin/src/it/MSITE-304/goals.txt Tue Jan  4 14:12:55 2011
@@ -1 +1 @@
-site:stage-deploy
\ No newline at end of file
+clean site:site site:stage site:stage-deploy
\ No newline at end of file

Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java?rev=1055047&r1=1055046&r2=1055047&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDeployMojo.java Tue Jan  4 14:12:55 2011
@@ -116,7 +116,7 @@ public class SiteDeployMojo
      * @required
      * @readonly
      */
-    private MavenProject project;
+    protected MavenProject project;
 
     /**
      * @component

Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java?rev=1055047&r1=1055046&r2=1055047&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageDeployMojo.java Tue Jan  4 14:12:55 2011
@@ -19,31 +19,11 @@ package org.apache.maven.plugins.site;
  * under the License.
  */
 
-import org.apache.maven.artifact.manager.WagonConfigurationException;
-import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.doxia.tools.SiteTool;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.settings.Settings;
-import org.apache.maven.wagon.CommandExecutionException;
-import org.apache.maven.wagon.CommandExecutor;
-import org.apache.maven.wagon.ConnectionException;
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.TransferFailedException;
-import org.apache.maven.wagon.UnsupportedProtocolException;
-import org.apache.maven.wagon.Wagon;
-import org.apache.maven.wagon.authentication.AuthenticationException;
-import org.apache.maven.wagon.authorization.AuthorizationException;
-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.context.Context;
-import org.codehaus.plexus.context.ContextException;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 
-import java.io.File;
 import java.util.List;
 
 /**
@@ -58,7 +38,7 @@ import java.util.List;
  * @requiresDependencyResolution test
  */
 public class SiteStageDeployMojo
-    extends SiteStageMojo implements Contextualizable
+    extends SiteStageMojo
 {
     /**
      * The staged site will be deployed to this URL.
@@ -89,56 +69,19 @@ public class SiteStageDeployMojo
     private String stagingRepositoryId;
 
     /**
-     * Whether to run the "chmod" command on the remote site after the deploy.
-     * Defaults to "true".
+     * SiteTool.
      *
-     * @parameter expression="${maven.site.chmod}" default-value="true"
-     * @since 2.1
-     */
-    private boolean chmod;
-
-    /**
-     * The mode used by the "chmod" command. Only used if chmod = true.
-     * Defaults to "g+w,a+rX".
-     *
-     * @parameter expression="${maven.site.chmod.mode}" default-value="g+w,a+rX"
-     * @since 2.1
-     */
-    private String chmodMode;
-
-    /**
-     * The options used by the "chmod" command. Only used if chmod = true.
-     * Defaults to "-Rf".
-     *
-     * @parameter expression="${maven.site.chmod.options}" default-value="-Rf"
-     * @since 2.1
-     */
-    private String chmodOptions;
-
-    /**
      * @component
+     * @since 2.3
      */
-    private WagonManager wagonManager;
-
-    /**
-     * The current user system settings for use in Maven.
-     *
-     * @parameter expression="${settings}"
-     * @required
-     * @readonly
-     */
-    private Settings settings;
-
-    private PlexusContainer container;
+    private SiteTool siteTool;
 
     /**
      * {@inheritDoc}
      */
     public void execute()
-        throws MojoExecutionException, MojoFailureException
+        throws MojoExecutionException
     {
-        super.execute();
-
         deployStagingSite();
     }
 
@@ -151,101 +94,12 @@ public class SiteStageDeployMojo
      *          if any
      */
     private void deployStagingSite()
-        throws MojoExecutionException, MojoFailureException
+        throws MojoExecutionException
     {
         stagingSiteURL = getStagingSiteURL( project, reactorProjects, stagingSiteURL );
-        getLog().info( "Using this URL for staging: " + stagingSiteURL );
-
-        Repository repository = new Repository( stagingRepositoryId, stagingSiteURL );
-
-        Wagon wagon;
-        try
-        {
-            wagon = wagonManager.getWagon( repository );
-            SiteDeployMojo.configureWagon( wagon, stagingRepositoryId, settings, container, getLog() );
-        }
-        catch ( UnsupportedProtocolException e )
-        {
-            throw new MojoExecutionException( "Unsupported protocol: '" + repository.getProtocol() + "'", e );
-        }
-        catch ( WagonConfigurationException e )
-        {
-            throw new MojoExecutionException( "Unable to configure Wagon: '" + repository.getProtocol() + "'", e );
-        }
-
-        if ( !wagon.supportsDirectoryCopy() )
-        {
-            throw new MojoExecutionException(
-                "Wagon protocol '" + repository.getProtocol() + "' doesn't support directory copying" );
-        }
-
-        try
-        {
-            Debug debug = new Debug();
-
-            wagon.addSessionListener( debug );
+        getLog().info( "Using this URL for stage deploy: " + stagingSiteURL );
 
-            wagon.addTransferListener( debug );
-
-            ProxyInfo proxyInfo = SiteDeployMojo.getProxyInfo( repository, wagonManager );
-            if ( proxyInfo != null )
-            {
-                wagon.connect( repository, wagonManager.getAuthenticationInfo( stagingRepositoryId ), proxyInfo );
-            }
-            else
-            {
-                wagon.connect( repository, wagonManager.getAuthenticationInfo( stagingRepositoryId ) );
-            }
-
-            wagon.putDirectory( new File( stagingDirectory, getStructure( project, false ) ), "." );
-
-            if ( chmod && wagon instanceof CommandExecutor )
-            {
-                CommandExecutor exec = (CommandExecutor) wagon;
-                exec.executeCommand( "chmod " + chmodOptions + " " + chmodMode + " " + repository.getBasedir() );
-            }
-        }
-        catch ( ResourceDoesNotExistException e )
-        {
-            throw new MojoExecutionException( "Error uploading site", e );
-        }
-        catch ( TransferFailedException e )
-        {
-            throw new MojoExecutionException( "Error uploading site", e );
-        }
-        catch ( AuthorizationException e )
-        {
-            throw new MojoExecutionException( "Error uploading site", e );
-        }
-        catch ( ConnectionException e )
-        {
-            throw new MojoExecutionException( "Error uploading site", e );
-        }
-        catch ( AuthenticationException e )
-        {
-            throw new MojoExecutionException( "Error uploading site", e );
-        }
-        catch ( CommandExecutionException e )
-        {
-            throw new MojoExecutionException( "Error uploading site", e );
-        }
-        finally
-        {
-            try
-            {
-                wagon.disconnect();
-            }
-            catch ( ConnectionException e )
-            {
-                getLog().error( "Error disconnecting wagon - ignored", e );
-            }
-        }
-    }
-
-    public void contextualize( Context context )
-        throws ContextException
-    {
-        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
+        deployTo( stagingRepositoryId, stagingSiteURL );
     }
 
     /**

Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageMojo.java?rev=1055047&r1=1055046&r2=1055047&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageMojo.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteStageMojo.java Tue Jan  4 14:12:55 2011
@@ -27,7 +27,6 @@ import org.apache.maven.plugin.MojoExecu
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.plugins.site.wagon.repository.Repository;
-import org.codehaus.plexus.util.PathTool;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -45,7 +44,7 @@ import org.codehaus.plexus.util.StringUt
  * @requiresDependencyResolution test
  */
 public class SiteStageMojo
-    extends SiteMojo
+    extends SiteDeployMojo
 {
     protected static final String DEFAULT_STAGING_DIRECTORY = "staging";
 
@@ -59,12 +58,31 @@ public class SiteStageMojo
     protected File stagingDirectory;
 
     /**
+     * The reactor projects.
+     *
+     * @parameter default-value="${reactorProjects}"
+     * @required
+     * @readonly
+     * @since 2.3
+     */
+    protected List<MavenProject> reactorProjects;
+
+    /**
      * @see org.apache.maven.plugin.Mojo#execute()
      */
     public void execute()
-        throws MojoExecutionException, MojoFailureException
+        throws MojoExecutionException
     {
-        String structureProject = getStructure( project, false );
+        String structureProject;
+
+        try
+        {
+            structureProject = getStructure( project, false );
+        }
+        catch ( MojoFailureException ex )
+        {
+            throw new MojoExecutionException( "Missing site information.", ex );
+        }
 
         if ( structureProject == null )
         {
@@ -74,7 +92,7 @@ public class SiteStageMojo
         stagingDirectory = getStagingDirectory( project, reactorProjects, stagingDirectory );
         getLog().info( "Using this directory for staging: " + stagingDirectory );
 
-        outputDirectory = new File( stagingDirectory, structureProject );
+        final File outputDirectory = new File( stagingDirectory, structureProject );
 
         // Safety
         if ( !outputDirectory.exists() )
@@ -82,34 +100,10 @@ public class SiteStageMojo
             outputDirectory.mkdirs();
         }
 
-        String outputRelativePath = PathTool.getRelativePath( stagingDirectory.getAbsolutePath(), new File(
-            outputDirectory, "dummy.html" ).getAbsolutePath() );
-        project.setUrl( outputRelativePath + "/" + structureProject );
-
-        MavenProject parent = siteTool.getParentProject( project, reactorProjects, localRepository );
-        if ( parent != null )
-        {
-            String structureParentProject = getStructure( parent, true );
-            if ( structureParentProject != null )
-            {
-                parent.setUrl( outputRelativePath + "/" + structureParentProject );
-            }
-        }
-
-        if ( reactorProjects != null && reactorProjects.size() > 1 )
-        {
-            for ( MavenProject reactorProject : reactorProjects )
-            {
-                if ( reactorProject != null && reactorProject.getParent() != null
-                    && project.getArtifactId().equals( reactorProject.getParent().getArtifactId() ) )
-                {
-                    String structureReactorProject = getStructure( reactorProject, false );
-                    reactorProject.setUrl( outputRelativePath + "/" + structureReactorProject );
-                }
-            }
-        }
+        final String url = "file://" + outputDirectory.getAbsolutePath();
+        final String id = "stagingLocal";
 
-        super.execute();
+        deployTo( id, url );
     }
 
     /**