You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2010/09/12 02:21:59 UTC

svn commit: r996227 - in /maven/archetype/trunk: archetype-common/src/main/java/org/apache/maven/archetype/ archetype-common/src/main/java/org/apache/maven/archetype/creator/ archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/

Author: hboutemy
Date: Sun Sep 12 00:21:58 2010
New Revision: 996227

URL: http://svn.apache.org/viewvc?rev=996227&view=rev
Log:
[ARCHETYPE-323] honour outputDirectory plugin parameter

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-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=996227&r1=996226&r2=996227&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 Sun Sep 12 00:21:58 2010
@@ -56,6 +56,8 @@ public class ArchetypeCreationRequest
 
     private String postPhase;
 
+    private File outputDirectory;
+
     public String getPostPhase()
     {
         return postPhase;
@@ -211,4 +213,16 @@ public class ArchetypeCreationRequest
 
         return this;
     }
+
+    public File getOutputDirectory()
+    {
+        return outputDirectory;
+    }
+
+    public ArchetypeCreationRequest setOutputDirectory( File outputDirectory )
+    {
+        this.outputDirectory = outputDirectory;
+
+        return this;
+    }
 }

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=996227&r1=996226&r2=996227&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 Sun Sep 12 00:21:58 2010
@@ -87,6 +87,9 @@ public class FilesetArchetypeCreator
     extends AbstractLogEnabled
     implements ArchetypeCreator
 {
+    private final static String DEFAULT_OUTPUT_DIRECTORY = "target" + File.separator + "generated-sources"
+        + File.separator + "archetype";
+
     /** @plexus.requirement */
     private ArchetypeFilesResolver archetypeFilesResolver;
 
@@ -106,6 +109,8 @@ public class FilesetArchetypeCreator
         boolean keepParent = request.isKeepParent();
         boolean partialArchetype = request.isPartialArchetype();
         ArtifactRepository localRepository = request.getLocalRepository();
+        File outputDirectory = request.getOutputDirectory();
+        File basedir = project.getBasedir();
 
         Properties properties = new Properties();
         Properties configurationProperties = new Properties();
@@ -117,18 +122,21 @@ public class FilesetArchetypeCreator
 
         extractPropertiesFromProject( project, properties, configurationProperties, request.getPackageName() );
 
-        File basedir = project.getBasedir();
-        File generatedSourcesDirectory = FileUtils.resolveFile( basedir, getGeneratedSourcesDirectory() );
-        generatedSourcesDirectory.mkdirs();
+        if ( outputDirectory == null )
+        {
+            getLogger().debug( "No output directory defined, using default: " + DEFAULT_OUTPUT_DIRECTORY );
+            outputDirectory = FileUtils.resolveFile( basedir, DEFAULT_OUTPUT_DIRECTORY );
+        }
+        outputDirectory.mkdirs();
 
-        getLogger().debug( "Creating archetype in " + generatedSourcesDirectory );
+        getLogger().debug( "Creating archetype in " + outputDirectory );
 
         try
         {
             File archetypePomFile =
-                createArchetypeProjectPom( project, localRepository, configurationProperties, generatedSourcesDirectory );
+                createArchetypeProjectPom( project, localRepository, configurationProperties, outputDirectory );
 
-            File archetypeResourcesDirectory = new File( generatedSourcesDirectory, getTemplateOutputDirectory() );
+            File archetypeResourcesDirectory = new File( outputDirectory, getTemplateOutputDirectory() );
 
             File archetypeFilesDirectory = new File( archetypeResourcesDirectory, Constants.ARCHETYPE_RESOURCES );
             getLogger().debug( "Archetype's files output directory " + archetypeFilesDirectory );
@@ -227,7 +235,7 @@ public class FilesetArchetypeCreator
                 IOUtil.close( out );
             }
 
-            createArchetypeBasicIt( archetypeDescriptor, generatedSourcesDirectory );
+            createArchetypeBasicIt( archetypeDescriptor, outputDirectory );
 
             InvocationRequest internalRequest = new DefaultInvocationRequest();
             internalRequest.setPomFile( archetypePomFile );
@@ -1168,11 +1176,6 @@ public class FilesetArchetypeCreator
         return extensions;
     }
 
-    private String getGeneratedSourcesDirectory()
-    {
-        return "target" + File.separator + "generated-sources" + File.separator + "archetype";
-    }
-
     private Map<String, List<String>> getGroupsMap( final List<String> files, final int level )
     {
         Map<String, List<String>> groups = new HashMap<String, List<String>>();

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=996227&r1=996226&r2=996227&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 Sun Sep 12 00:21:58 2010
@@ -147,7 +147,11 @@ public class CreateArchetypeFromProjectM
      */
     private String archetypePostPhase;
 
-    /** @parameter expression="${project.build.directory}" */
+    /**
+     * The directory where the archetype should be created.
+     * 
+     * @parameter expression="${project.build.directory}/generated-sources/archetype"
+     */
     private File outputDirectory;
 
     /** @parameter expression="${testMode}" */
@@ -183,21 +187,22 @@ public class CreateArchetypeFromProjectM
 
             ArchetypeCreationRequest request = new ArchetypeCreationRequest()
                 .setProject( project )
-                /*Used when in interactive mode*/
+                /* Used when in interactive mode */
                 .setProperties( properties )
                 .setLanguages( languages )
-                /*Should be refactored to use some ant patterns*/
+                /* Should be refactored to use some ant patterns */
                 .setFiltereds( filtereds )
-                /*This should be correctly handled*/
+                /* This should be correctly handled */
                 .setPreserveCData( preserveCData )
                 .setKeepParent( keepParent )
                 .setPartialArchetype( partialArchetype )
-                /*This should be used before there and use only languages and filtereds*/
+                /* This should be used before there and use only languages and filtereds */
                 .setArchetypeRegistryFile( archetypeRegistryFile )
                 .setLocalRepository( localRepository )
-                /*this should be resolved and asked for user to verify*/
+                /* this should be resolved and asked for user to verify */
                 .setPackageName( packageName )
-                .setPostPhase( archetypePostPhase );
+                .setPostPhase( archetypePostPhase )
+                .setOutputDirectory( outputDirectory );
 
             ArchetypeCreationResult result = archetype.createArchetypeFromProject( request );
 
@@ -207,7 +212,7 @@ public class CreateArchetypeFromProjectM
                                                 result.getCause().getMessage() );
             }
 
-            getLog().info( "Archetype created in target/generated-sources/archetype" );
+            getLog().info( "Archetype created in " + outputDirectory );
 
             if ( testMode )
             {