[MDEPLOY-59] deploy:deploy-file deletes the original file on error
authorBenjamin Bentmann <bentmann@apache.org>
Sun, 15 Mar 2009 22:22:46 +0000 (22:22 +0000)
committerBenjamin Bentmann <bentmann@apache.org>
Sun, 15 Mar 2009 22:22:46 +0000 (22:22 +0000)
o Added sanity check similiar to install:install-file and aborted deployment in case user specified files from the local repo

git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@754777 13f79535-47bb-0310-9956-ffa450edef68

src/main/java/org/apache/maven/plugin/deploy/DeployFileMojo.java

index b876e65..31ab9f7 100644 (file)
@@ -30,6 +30,7 @@ import org.apache.maven.model.Parent;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.artifact.ProjectArtifactMetadata;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
@@ -201,7 +202,7 @@ public class DeployFileMojo
     }
 
     public void execute()
-        throws MojoExecutionException
+        throws MojoExecutionException, MojoFailureException
     {
         initProperties();
 
@@ -228,6 +229,11 @@ public class DeployFileMojo
         Artifact artifact =
             artifactFactory.createArtifactWithClassifier( groupId, artifactId, version, packaging, classifier );
 
+        if ( file.equals( getLocalRepoFile( artifact ) ) )
+        {
+            throw new MojoFailureException( "Cannot deploy artifact from the local repository: " + file );
+        }
+
         // Upload the POM if requested, generating one if need be
         if ( generatePom )
         {
@@ -251,6 +257,19 @@ public class DeployFileMojo
     }
 
     /**
+     * Gets the path of the specified artifact within the local repository. Note that the returned path need not exist
+     * (yet).
+     * 
+     * @param artifact The artifact whose local repo path should be determined, must not be <code>null</code>.
+     * @return The absolute path to the artifact when installed, never <code>null</code>.
+     */
+    private File getLocalRepoFile( Artifact artifact )
+    {
+        String path = getLocalRepository().pathOf( artifact );
+        return new File( getLocalRepository().getBasedir(), path );
+    }
+
+    /**
      * Process the supplied pomFile to get groupId, artifactId, version, and packaging
      *
      * @param model The POM to extract missing artifact coordinates from, must not be <code>null</code>.