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" );