You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2012/09/04 12:32:35 UTC

svn commit: r1380527 - in /maven/plugins/trunk/maven-scm-publish-plugin: pom.xml src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java

Author: olamy
Date: Tue Sep  4 10:32:34 2012
New Revision: 1380527

URL: http://svn.apache.org/viewvc?rev=1380527&view=rev
Log:
in case of svn repository, we now check if remote path exists and create it.

Modified:
    maven/plugins/trunk/maven-scm-publish-plugin/pom.xml
    maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java

Modified: maven/plugins/trunk/maven-scm-publish-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-scm-publish-plugin/pom.xml?rev=1380527&r1=1380526&r2=1380527&view=diff
==============================================================================
--- maven/plugins/trunk/maven-scm-publish-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-scm-publish-plugin/pom.xml Tue Sep  4 10:32:34 2012
@@ -52,7 +52,7 @@ under the License.
   </distributionManagement>
 
   <properties>
-    <scmVersion>1.7</scmVersion>
+    <scmVersion>1.8-SNAPSHOT</scmVersion>
     <mavenVersion>2.2.1</mavenVersion>
     <pluginTools>3.1</pluginTools>
   </properties>
@@ -64,6 +64,26 @@ under the License.
       <version>2.3.2</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.maven.scm</groupId>
+      <artifactId>maven-scm-api</artifactId>
+      <version>${scmVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.scm</groupId>
+      <artifactId>maven-scm-provider-gitexe</artifactId>
+      <version>${scmVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.scm</groupId>
+      <artifactId>maven-scm-provider-svnexe</artifactId>
+      <version>${scmVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.scm</groupId>
+      <artifactId>maven-scm-provider-svn-commons</artifactId>
+      <version>${scmVersion}</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-model</artifactId>
       <version>${mavenVersion}</version>

Modified: maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java?rev=1380527&r1=1380526&r2=1380527&view=diff
==============================================================================
--- maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java (original)
+++ maven/plugins/trunk/maven-scm-publish-plugin/src/main/java/org/apache/maven/plugins/scmpublish/AbstractScmPublishMojo.java Tue Sep  4 10:32:34 2012
@@ -26,6 +26,8 @@ import org.apache.maven.plugin.MojoExecu
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.scm.CommandParameter;
+import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmBranch;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
@@ -33,6 +35,8 @@ import org.apache.maven.scm.ScmResult;
 import org.apache.maven.scm.manager.NoSuchScmProviderException;
 import org.apache.maven.scm.manager.ScmManager;
 import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.provider.svn.AbstractSvnScmProvider;
+import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
 import org.apache.maven.scm.repository.ScmRepository;
 import org.apache.maven.scm.repository.ScmRepositoryException;
 import org.apache.maven.settings.Settings;
@@ -240,6 +244,57 @@ public abstract class AbstractScmPublish
     protected void checkoutExisting()
         throws MojoExecutionException
     {
+
+        if ( scmProvider instanceof AbstractSvnScmProvider )
+        {
+            File baseDir = null;
+            try
+            {
+
+                getLog().debug( "use AbstractSvnScmProvider so we can check if remote url exists and create it" );
+                AbstractSvnScmProvider svnScmProvider = (AbstractSvnScmProvider) scmProvider;
+
+                boolean remoteExists = svnScmProvider.remoteUrlExist( scmRepository.getProviderRepository(), null );
+                if ( !remoteExists )
+                {
+                    // create a temporary directory for svnexec
+                    baseDir = File.createTempFile( "scm", "tmp" );
+                    baseDir.delete();
+                    baseDir.mkdirs();
+                    // to prevent fileSet cannot be empty
+                    ScmFileSet scmFileSet = new ScmFileSet( baseDir, new File( "" ) );
+
+                    CommandParameters commandParameters = new CommandParameters();
+                    commandParameters.setString( CommandParameter.SCM_MKDIR_CREATE_IN_LOCAL, Boolean.FALSE.toString() );
+                    commandParameters.setString( CommandParameter.MESSAGE, "automatic path creation:"
+                        + ( (SvnScmProviderRepository) scmRepository.getProviderRepository() ).getUrl() );
+                    svnScmProvider.mkdir( scmRepository.getProviderRepository(), scmFileSet, commandParameters );
+                }
+            }
+            catch ( IOException e )
+            {
+                throw new MojoExecutionException( e.getMessage(), e );
+            }
+            catch ( ScmException e )
+            {
+                throw new MojoExecutionException( e.getMessage(), e );
+            }
+            finally
+            {
+                if ( baseDir != null )
+                {
+                    try
+                    {
+                        FileUtils.forceDeleteOnExit( baseDir );
+                    }
+                    catch ( IOException e )
+                    {
+                        throw new MojoExecutionException( e.getMessage(), e );
+                    }
+                }
+            }
+        }
+
         logInfo( "%s the pub tree from  %s ...", ( tryUpdate ? "Updating" : "Checking out" ), pubScmUrl );
 
         if ( checkoutDirectory.exists() && !tryUpdate )