Author: aramirez
Date: Thu May 25 03:31:12 2006
New Revision: 409354

URL: http://svn.apache.org/viewvc?rev=409354&view=rev
Log:
PR: MINSTALL-21

The values for groupId, artifactId, version and packaging should be set 
automatically when a pom is provided. 

Modified:
    
maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallFileMojo.java

Modified: 
maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallFileMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallFileMojo.java?rev=409354&r1=409353&r2=409354&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallFileMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallFileMojo.java
 Thu May 25 03:31:12 2006
@@ -21,15 +21,21 @@
 import org.apache.maven.artifact.installer.ArtifactInstallationException;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.model.Model;
+import org.apache.maven.model.Parent;
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 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.xml.pull.XmlPullParserException;
 
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.Reader;
+import java.io.FileReader;
+import java.io.FileNotFoundException;
 
 /**
  * Installs a file in local repository.
@@ -45,25 +51,21 @@
 {
     /**
      * @parameter expression="${groupId}"
-     * @required
      */
     protected String groupId;
 
     /**
      * @parameter expression="${artifactId}"
-     * @required
      */
     protected String artifactId;
 
     /**
      * @parameter expression="${version}"
-     * @required
      */
     protected String version;
 
     /**
      * @parameter expression="${packaging}"
-     * @required
      */
     protected String packaging;
 
@@ -91,8 +93,6 @@
     public void execute()
         throws MojoExecutionException, MojoFailureException
     {
-        Artifact artifact = artifactFactory.createArtifact( groupId, 
artifactId, version, null, packaging );
-
         ArtifactMetadata metadata = null;
 
         Artifact pomArtifact = null;
@@ -101,9 +101,21 @@
 
         if( pomFile != null && pomFile.exists() )
         {
-               pomArtifact = artifactFactory.createArtifact( groupId, 
artifactId, version, null, "pom" );
+            processModel( readPom( pomFile ) );
+
+            pomArtifact = artifactFactory.createArtifact( groupId, artifactId, 
version, null, "pom" );
+        }
+        else //if pomFile is not provided check the groupId, artifactId, 
version and packaging
+        {
+            // Verify arguments
+            if ( groupId == null || artifactId == null || version == null || 
packaging == null )
+            {
+                throw new MojoExecutionException( "Missing group, artifact, 
version, or packaging information" );
+            }
         }
 
+        Artifact artifact = artifactFactory.createArtifact( groupId, 
artifactId, version, null, packaging );
+
         // TODO: check if it exists first, and default to true if not
         if ( generatePom )
         {
@@ -154,7 +166,7 @@
                     {
                         //create checksums for pom and artifact
                         pom = new File( localRepository.getBasedir(),
-                                             
localRepository.pathOfLocalRepositoryMetadata( metadata, localRepository ) );
+                                        
localRepository.pathOfLocalRepositoryMetadata( metadata, localRepository ) );
 
                         installCheckSum( pom, true );
                     }
@@ -170,7 +182,7 @@
                         installCheckSum( pomFile, pomArtifact, false );
                     }
                 }
-            } 
+            }
             else
             {
                 throw new MojoFailureException( "Cannot install artifact. 
Artifact is already in the local repository.\n\nFile in question is: " + file + 
"\n" );
@@ -180,6 +192,65 @@
         {
             throw new MojoExecutionException(
                 "Error installing artifact '" + 
artifact.getDependencyConflictId() + "': " + e.getMessage(), e );
+        }
+    }
+
+    private Model readPom( File file )
+        throws MojoExecutionException
+    {
+        Reader reader = null;
+        try
+        {
+            reader = new FileReader( file );
+
+            MavenXpp3Reader mavenReader = new MavenXpp3Reader();
+
+            return mavenReader.read( reader );
+        }
+        catch( FileNotFoundException e )
+        {
+            throw new MojoExecutionException( "File not found " + file, e );
+        }
+        catch( IOException e )
+        {
+            throw new MojoExecutionException( "Error reading pom", e );
+        }
+        catch( XmlPullParserException e )
+        {
+            throw new MojoExecutionException( "Error reading pom", e );
+        }
+        finally
+        {
+            IOUtil.close( reader );
+        }
+    }
+
+    private void processModel( Model model )
+    {
+        Parent parent = model.getParent();
+
+        if ( this.groupId == null )
+        {
+            if ( parent != null && parent.getGroupId() != null )
+            {
+                this.groupId = parent.getGroupId();
+            }
+            if ( model.getGroupId() != null )
+            {
+                this.groupId = model.getGroupId();
+            }
+        }
+        if ( this.artifactId == null && model.getArtifactId() != null )
+        {
+            this.artifactId = model.getArtifactId();
+        }
+        if ( this.version == null && model.getVersion() != null )
+        {
+            this.version = model.getVersion();
+        }
+        if ( this.packaging == null && model.getPackaging() != null )
+        {
+            this.packaging = model.getPackaging();
         }
     }
 }


Reply via email to