You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ra...@apache.org on 2008/10/15 16:05:03 UTC

svn commit: r704921 - in /maven/archetype/trunk: archetype-common/src/main/java/org/apache/maven/archetype/ archetype-common/src/main/java/org/apache/maven/archetype/creator/ archetype-common/src/test/java/org/apache/maven/archetype/creator/ archetype-...

Author: rafale
Date: Wed Oct 15 07:05:03 2008
New Revision: 704921

URL: http://svn.apache.org/viewvc?rev=704921&view=rev
Log:
Added function to call a inner lifecycle on the created archetype at the end of the create-from-project process

Added:
    maven/archetype/trunk/archetype-common/src/test/resources/META-INF/
    maven/archetype/trunk/archetype-common/src/test/resources/META-INF/maven/
    maven/archetype/trunk/archetype-common/src/test/resources/META-INF/maven/org.apache.maven.archetype/
    maven/archetype/trunk/archetype-common/src/test/resources/META-INF/maven/org.apache.maven.archetype/archetype-common/
    maven/archetype/trunk/archetype-common/src/test/resources/META-INF/maven/org.apache.maven.archetype/archetype-common/pom.properties   (with props)
Modified:
    maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
    maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
    maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorTest.java
    maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripTest.java
    maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripWithProxyTest.java
    maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleTest.java
    maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java

Modified: maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java?rev=704921&r1=704920&r2=704921&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java (original)
+++ maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java Wed Oct 15 07:05:03 2008
@@ -54,6 +54,18 @@
 
     private Properties properties;
 
+    private String postPhase;
+
+    public String getPostPhase() {
+        return postPhase;
+    }
+
+    public ArchetypeCreationRequest setPostPhase(String postPhase) {
+        this.postPhase = postPhase;
+
+        return this;
+    }
+
     public ArtifactRepository getLocalRepository()
     {
         return localRepository;

Modified: maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java?rev=704921&r1=704920&r2=704921&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java (original)
+++ maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java Wed Oct 15 07:05:03 2008
@@ -19,8 +19,6 @@
 
 package org.apache.maven.archetype.creator;
 
-import org.apache.commons.collections.BidiMap;
-import org.apache.commons.collections.bidimap.DualTreeBidiMap;
 import org.apache.maven.archetype.ArchetypeCreationRequest;
 import org.apache.maven.archetype.ArchetypeCreationResult;
 import org.apache.maven.archetype.common.ArchetypeFilesResolver;
@@ -64,6 +62,7 @@
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -71,6 +70,10 @@
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
+import org.apache.maven.shared.invoker.DefaultInvocationRequest;
+import org.apache.maven.shared.invoker.DefaultInvoker;
+import org.apache.maven.shared.invoker.InvocationRequest;
+import org.apache.maven.shared.invoker.Invoker;
 
 /** @plexus.component role-hint="fileset" */
 public class FilesetArchetypeCreator
@@ -90,19 +93,12 @@
                                  ArchetypeCreationResult result )
     {
         MavenProject project = request.getProject();
-
         List languages = request.getLanguages();
-
         List filtereds = request.getFiltereds();
-
         String defaultEncoding = request.getDefaultEncoding();
-
         boolean preserveCData = request.isPreserveCData();
-
         boolean keepParent = request.isKeepParent();
-
         boolean partialArchetype = request.isPartialArchetype();
-
         ArtifactRepository localRepository = request.getLocalRepository();
 
         Properties properties = new Properties();
@@ -238,25 +234,18 @@
         }
 
         File archetypeResourcesDirectory = FileUtils.resolveFile( generatedSourcesDirectory, getTemplateOutputDirectory() );
-
         archetypeResourcesDirectory.mkdirs();
 
         File archetypeFilesDirectory = FileUtils.resolveFile( archetypeResourcesDirectory, Constants.ARCHETYPE_RESOURCES );
-
         archetypeFilesDirectory.mkdirs();
-
         getLogger().debug( "Archetype's files output directory " + archetypeFilesDirectory );
 
         File archetypeDescriptorFile = FileUtils.resolveFile( archetypeResourcesDirectory, Constants.ARCHETYPE_DESCRIPTOR );
-
         archetypeDescriptorFile.getParentFile().mkdirs();
 
         ArchetypeDescriptor archetypeDescriptor = new ArchetypeDescriptor();
-
         archetypeDescriptor.setName( project.getArtifactId() );
-
         getLogger().debug( "Starting archetype's descriptor " + project.getArtifactId() );
-
         archetypeDescriptor.setPartial( partialArchetype );
 
         addRequiredProperties( archetypeDescriptor, properties );
@@ -275,10 +264,7 @@
         {
             Model pom = pomManager.readPom( FileUtils.resolveFile( basedir, Constants.ARCHETYPE_POM ) );
 
-            registerProject( pom );
-
             List fileNames = resolveFileNames( pom, basedir );
-
             getLogger().debug( "Scanned for files " + fileNames.size() );
 
             Iterator names = fileNames.iterator();
@@ -289,13 +275,11 @@
             }
 
             List filesets = resolveFileSets( packageName, fileNames, languages, filtereds, defaultEncoding );
-
             getLogger().debug( "Resolved filesets for " + archetypeDescriptor.getName() );
 
             archetypeDescriptor.setFileSets( filesets );
 
             createArchetypeFiles( reverseProperties, filesets, packageName, basedir, archetypeFilesDirectory, defaultEncoding );
-
             getLogger().debug( "Created files for " + archetypeDescriptor.getName() );
 
             setParentArtifactId(
@@ -313,7 +297,6 @@
                 {
                     moduleIdDirectory = StringUtils.replace( moduleId, rootArtifactId, "__rootArtifactId__" );
                 }
-
                 getLogger().debug( "Creating module " + moduleId );
 
                 ModuleDescriptor moduleDescriptor =
@@ -347,7 +330,6 @@
                 configurationProperties.getProperty( Constants.ARTIFACT_ID ),
                 archetypeFilesDirectory, basedir,
                 pomReversedProperties, preserveCData, keepParent );
-
             getLogger().debug( "Created Archetype " + archetypeDescriptor.getName() + " pom" );
 
             ArchetypeDescriptorXpp3Writer writer = new ArchetypeDescriptorXpp3Writer();
@@ -366,6 +348,13 @@
             getLogger().debug(
                 "Archetype " + archetypeDescriptor.getName() + " old descriptor written"
             );
+            
+            InvocationRequest internalRequest = new DefaultInvocationRequest();
+            internalRequest.setPomFile( archetypePomFile );
+            internalRequest.setGoals( Collections.singletonList( request.getPostPhase() ) );
+
+            Invoker invoker = new DefaultInvoker();
+            invoker.execute(internalRequest);
         }
         catch ( Exception e )
         {
@@ -511,19 +500,11 @@
         return getGeneratedSourcesDirectory() + File.separator + Constants.ARCHETYPE_POM;
     }
 
-    private int id = 0;
-    private BidiMap registeredProjects = new DualTreeBidiMap();
-
     private String getPackageInPathFormat( String aPackage )
     {
         return StringUtils.replace( aPackage, ".", "/" );
     }
 
-    private void registerProject( Model pom )
-    {
-        registeredProjects.put( new Integer( id++ ), pom.getId() );
-    }
-
     private void rewriteReferences( Model pom,
                                     String rootArtifactId,
                                     String groupId )
@@ -1044,10 +1025,7 @@
             pom.setModules( null );
             pom.setGroupId( "${" + Constants.GROUP_ID + "}" );
             pom.setArtifactId( "${" + Constants.ARTIFACT_ID + "}" );
-            if ( pom.getVersion() != null )
-            {
-                pom.setVersion( "${" + Constants.VERSION + "}" );
-            }
+            pom.setVersion( "${" + Constants.VERSION + "}" );
 
             rewriteReferences( pom, pomReversedProperties.getProperty( Constants.ARTIFACT_ID ),
                 pomReversedProperties.getProperty( Constants.GROUP_ID ) );
@@ -1219,8 +1197,6 @@
         archetypeDescriptor.setId( replacementId );
         archetypeDescriptor.setDir( moduleDirectory );
 
-        registerProject( pom );
-
         setArtifactId( reverseProperties, pom.getArtifactId() );
 
         List fileNames = resolveFileNames( pom, basedir );

Modified: maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorTest.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorTest.java?rev=704921&r1=704920&r2=704921&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorTest.java (original)
+++ maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorTest.java Wed Oct 15 07:05:03 2008
@@ -139,7 +139,8 @@
             .setDefaultEncoding( "UTF-8" )
             .setPartialArchetype( false )
             .setPreserveCData( false )
-            .setKeepParent( false );
+            .setKeepParent( false )
+            .setPostPhase( "package" );
 
         ArchetypeCreationResult result = new ArchetypeCreationResult();
 

Modified: maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripTest.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripTest.java?rev=704921&r1=704920&r2=704921&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripTest.java (original)
+++ maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripTest.java Wed Oct 15 07:05:03 2008
@@ -105,7 +105,8 @@
         Properties properties = new Properties();
         properties.setProperty("someProperty", "someValue");
         ArchetypeCreationRequest acr = new ArchetypeCreationRequest().setProject( project ).
-            setLocalRepository( localRepository ).setProperties(properties);
+            setLocalRepository( localRepository ).setProperties(properties)
+            .setPostPhase( "package" );
 
         ArchetypeCreationResult creationResult = archetype.createArchetypeFromProject( acr );
 

Modified: maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripWithProxyTest.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripWithProxyTest.java?rev=704921&r1=704920&r2=704921&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripWithProxyTest.java (original)
+++ maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripWithProxyTest.java Wed Oct 15 07:05:03 2008
@@ -103,7 +103,8 @@
         MavenProject project = projectBuilder.build( pom, localRepository, null );
 
         ArchetypeCreationRequest acr = new ArchetypeCreationRequest().setProject( project ).
-            setLocalRepository( localRepository );
+            setLocalRepository( localRepository )
+            .setPostPhase( "package" );
 
         ArchetypeCreationResult creationResult = archetype.createArchetypeFromProject( acr );
 

Modified: maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleTest.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleTest.java?rev=704921&r1=704920&r2=704921&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleTest.java (original)
+++ maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleTest.java Wed Oct 15 07:05:03 2008
@@ -108,6 +108,7 @@
             setLocalRepository( localRepository )
             .setFiltereds(Constants.DEFAULT_FILTERED_EXTENSIONS)
             .setLanguages(Constants.DEFAULT_LANGUAGES)
+            .setPostPhase( "package" )
             ;
 
         ArchetypeCreationResult creationResult = archetype.createArchetypeFromProject( acr );

Added: maven/archetype/trunk/archetype-common/src/test/resources/META-INF/maven/org.apache.maven.archetype/archetype-common/pom.properties
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/test/resources/META-INF/maven/org.apache.maven.archetype/archetype-common/pom.properties?rev=704921&view=auto
==============================================================================
--- maven/archetype/trunk/archetype-common/src/test/resources/META-INF/maven/org.apache.maven.archetype/archetype-common/pom.properties (added)
+++ maven/archetype/trunk/archetype-common/src/test/resources/META-INF/maven/org.apache.maven.archetype/archetype-common/pom.properties Wed Oct 15 07:05:03 2008
@@ -0,0 +1 @@
+version=${project.version}
\ No newline at end of file

Propchange: maven/archetype/trunk/archetype-common/src/test/resources/META-INF/maven/org.apache.maven.archetype/archetype-common/pom.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java?rev=704921&r1=704920&r2=704921&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java (original)
+++ maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java Wed Oct 15 07:05:03 2008
@@ -138,6 +138,14 @@
      * @parameter expression="${archetype.properties}"
      */
     private File propertyFile;
+    
+    /**
+     * The property telling which phase call on the generated archetype.
+     * Interresting values are: package, instal and deploy
+     *
+     * @parameter expression="${archetype.postPhase}" default-value="package"
+     */
+    private String archetypePostPhase;
 
     /** @parameter expression="${basedir}/target" */
     private File outputDirectory;
@@ -198,7 +206,8 @@
                 .setArchetypeRegistryFile( archetypeRegistryFile )
                 .setLocalRepository( localRepository )
                 /*this should be resolved and asked for user to verify*/
-                .setPackageName(packageName);
+                .setPackageName(packageName)
+                .setPostPhase( archetypePostPhase );
 
             ArchetypeCreationResult result = archetype.createArchetypeFromProject( request );