You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2007/10/01 04:08:13 UTC

svn commit: r580821 - /maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java

Author: jvanzyl
Date: Sun Sep 30 19:08:12 2007
New Revision: 580821

URL: http://svn.apache.org/viewvc?rev=580821&view=rev
Log:
o extract only the deployment information like the build extensions and the distribution management. pullingin the parent POM is a little excessive as you drag in all the reporting, and anything else which you don't really want to execute while making an archetype. just deployment info

Modified:
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java?rev=580821&r1=580820&r2=580821&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java Sun Sep 30 19:08:12 2007
@@ -42,6 +42,8 @@
 import org.apache.maven.archetype.metadata.ModuleDescriptor;
 import org.apache.maven.archetype.metadata.RequiredProperty;
 import org.apache.maven.archetype.metadata.io.xpp3.ArchetypeDescriptorXpp3Writer;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Extension;
@@ -50,6 +52,8 @@
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.Profile;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.FileUtils;
@@ -92,6 +96,9 @@
     /** @plexus.requirement */
     private ArchetypeRegistryManager archetypeRegistryManager;
 
+    /** @plexus.requirement */
+    private MavenProjectBuilder projectBuilder;
+
     public void createArchetype(
         MavenProject project,
         File propertyFile,
@@ -102,7 +109,8 @@
         boolean preserveCData,
         boolean keepParent,
         boolean partialArchetype,
-        File archetypeRegistryFile
+        File archetypeRegistryFile,
+        ArtifactRepository localRepository
     )
         throws
         IOException,
@@ -135,6 +143,14 @@
 
         Model model = new Model();
         model.setModelVersion( "4.0.0" );
+        model.setGroupId( archetypeDefinition.getGroupId() );
+        model.setArtifactId( archetypeDefinition.getArtifactId() );
+        model.setVersion( archetypeDefinition.getVersion() );
+        model.setPackaging( "maven-archetype" );
+        model.setName( archetypeDefinition.getArtifactId() );
+
+        Build build = new Build();
+        model.setBuild( build );
 
         // In many cases where we are behind a firewall making Archetypes for work mates we want
         // to simply be able to deploy the archetypes once we have created them. In order to do
@@ -146,21 +162,33 @@
 
         if ( project.getParent() != null )
         {
-            Parent parent = new Parent();
-            parent.setGroupId( project.getParent().getGroupId() );
-            parent.setArtifactId( project.getParent().getArtifactId() );
-            parent.setVersion( project.getParent().getVersion() );
-            model.setParent( parent );
-        }
-
-        model.setGroupId( archetypeDefinition.getGroupId() );
-        model.setArtifactId( archetypeDefinition.getArtifactId() );
-        model.setVersion( archetypeDefinition.getVersion() );
-        model.setPackaging( "maven-archetype" );
-        model.setName( archetypeDefinition.getArtifactId() );
+            Artifact pa = project.getParentArtifact();
 
-        Build build = new Build();
-        model.setBuild( build );
+            try
+            {
+                MavenProject p = projectBuilder.buildFromRepository( pa, project.getRemoteArtifactRepositories(), localRepository );
+
+                if ( p.getDistributionManagement() != null )
+                {
+                    model.setDistributionManagement( p.getDistributionManagement() );
+                }
+
+                if ( p.getBuildExtensions() != null )
+                {
+                    for ( Iterator i = p.getBuildExtensions().iterator(); i.hasNext(); )
+                    {
+                        Extension be = (Extension) i.next();
+
+                        model.getBuild().addExtension( be );
+                    }
+                }
+            }
+            catch ( ProjectBuildingException e )
+            {
+                throw new TemplateCreationException(
+                    "Error reading parent POM of project: " + pa.getGroupId() + ":" + pa.getArtifactId() + ":" + pa.getVersion() );
+            }
+        }
 
         Extension extension = new Extension();
         extension.setGroupId( "org.apache.maven.archetype" );