You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by pt...@apache.org on 2016/01/07 09:05:01 UTC

maven-archetype git commit: ARCHETYPE-491 as a single commit

Repository: maven-archetype
Updated Branches:
  refs/heads/ARCHETYPE-494-1 [created] 61263a78f


ARCHETYPE-491 as a single commit


Project: http://git-wip-us.apache.org/repos/asf/maven-archetype/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-archetype/commit/61263a78
Tree: http://git-wip-us.apache.org/repos/asf/maven-archetype/tree/61263a78
Diff: http://git-wip-us.apache.org/repos/asf/maven-archetype/diff/61263a78

Branch: refs/heads/ARCHETYPE-494-1
Commit: 61263a78f9fcb9049d6546707f816ce3ff80c1c9
Parents: dafa0d8
Author: Petar Tahchiev <pa...@gmail.com>
Authored: Thu Jan 7 10:04:40 2016 +0200
Committer: Petar Tahchiev <pa...@gmail.com>
Committed: Thu Jan 7 10:04:40 2016 +0200

----------------------------------------------------------------------
 archetype-common/pom.xml                        |  28 +++++
 .../common/ArchetypeArtifactManager.java        |   2 +
 .../maven/archetype/common/Constants.java       |   2 +
 .../common/DefaultArchetypeArtifactManager.java |  20 +++
 .../creator/FilesetArchetypeCreator.java        |  17 +++
 .../DefaultFilesetArchetypeGenerator.java       |  29 ++++-
 .../META-INF/archetype-post-generate.groovy     |   6 +
 .../META-INF/maven/archetype-metadata.xml       | 121 +++++++++++++++++++
 .../archetypes/fileset_with_postscript/pom.xml  |  27 +++++
 .../archetype-resources/pom.xml                 |  38 ++++++
 .../archetype-resources/profiles.xml            |  13 ++
 .../archetype-resources/src/main/java/App.java  |  13 ++
 .../archetype-resources/src/main/java/App.ogg   |  13 ++
 .../src/main/java/ToDelete.java                 |   1 +
 .../src/main/java/inner/package/App2.java       |  13 ++
 .../src/main/resources/App.properties           |  13 ++
 .../src/main/resources/__artifactId__/touch.txt |  13 ++
 .../resources/__rootArtifactId__/touch_root.txt |  13 ++
 .../src/main/resources/some-dir/App.png         |  13 ++
 .../archetype-resources/src/site/apt/usage.apt  |  13 ++
 .../archetype-resources/src/site/site.xml       |  13 ++
 .../archetype-resources/subproject/pom.xml      |  44 +++++++
 .../subproject/src/main/java/App.java           |  13 ++
 .../subproject/subsubproject/pom.xml            |  40 ++++++
 .../subsubproject/src/main/java/App.java        |  13 ++
 ...aryProperty-__property-with-default-1__.java |  14 +++
 ...-property__-__property-with-default-2__.java |  14 +++
 ...me__rootArtifactId__Class__artifactId__.java |  14 +++
 .../DefaultArchetypeGeneratorTest.java          |  85 +++++++++++++
 29 files changed, 656 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/pom.xml
----------------------------------------------------------------------
diff --git a/archetype-common/pom.xml b/archetype-common/pom.xml
index a0b4efc..33d2ad4 100644
--- a/archetype-common/pom.xml
+++ b/archetype-common/pom.xml
@@ -164,6 +164,11 @@
       <type>war</type>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.groovy</groupId>
+      <artifactId>groovy</artifactId>
+      <version>1.8.3</version>
+    </dependency>
   </dependencies>
 
   <build>
@@ -361,7 +366,30 @@
               <goal>run</goal>
             </goals>
           </execution>
+          <execution>
+            <id>archetype-test-fileset-with-postscript</id>
+            <phase>process-test-resources</phase>
+            <configuration>
+              <target>
+                <property name="test.archetype.name" value="fileset_with_postscript" />
+                <property name="test.archetype.version" value="1.0" />
+
+                <property name="test.projects.repository" value="repositories/central" />
+                <property name="test.archetype.name-version" value="${test.archetype.name}-${test.archetype.version}" />
+                <property name="test.source.directory" value="${project.basedir}/src/test/archetypes/${test.archetype.name-version}" />
+                <property name="test.target.directory" value="${project.build.directory}/test-classes/${test.projects.repository}/archetypes/${test.archetype.name}/${test.archetype.version}" />
 
+                <mkdir dir="${test.target.directory}" />
+
+                <jar destfile="${test.target.directory}/${test.archetype.name-version}.jar" basedir="${test.source.directory}/" />
+
+                <copy tofile="${test.target.directory}/${test.archetype.name-version}.pom" file="${test.source.directory}/META-INF/maven/archetypes/${test.archetype.name}/pom.xml" />
+              </target>
+            </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
           <execution>
             <id>repository-metadata</id>
             <phase>process-test-resources</phase>

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/main/java/org/apache/maven/archetype/common/ArchetypeArtifactManager.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/common/ArchetypeArtifactManager.java b/archetype-common/src/main/java/org/apache/maven/archetype/common/ArchetypeArtifactManager.java
index 529f0e3..5fdaab1 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/common/ArchetypeArtifactManager.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/common/ArchetypeArtifactManager.java
@@ -81,6 +81,8 @@ public interface ArchetypeArtifactManager
                     ArtifactRepository archetypeRepository, ArtifactRepository localRepository,
                     List<ArtifactRepository> repos );
 
+    String getPostGenerationScript( File archetypeFile ) throws UnknownArchetype;
+
     /**
      */
     ArchetypeDescriptor getFileSetArchetypeDescriptor( File archetypeFile )

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/main/java/org/apache/maven/archetype/common/Constants.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/common/Constants.java b/archetype-common/src/main/java/org/apache/maven/archetype/common/Constants.java
index 9015c62..db5ce46 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/common/Constants.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/common/Constants.java
@@ -36,6 +36,8 @@ public interface Constants
 
     String ARCHETYPE_POST_GENERATION_GOALS = "archetype.goals";
 
+    String ARCHETYPE_POST_GENERATION_SCRIPT = "META-INF/archetype-post-generate.groovy";
+
     String ARCHETYPE_POM = "pom.xml";
 
     String ARCHETYPE_RESOURCES = "archetype-resources";

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/main/java/org/apache/maven/archetype/common/DefaultArchetypeArtifactManager.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/common/DefaultArchetypeArtifactManager.java b/archetype-common/src/main/java/org/apache/maven/archetype/common/DefaultArchetypeArtifactManager.java
index a3de790..6c35f18 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/common/DefaultArchetypeArtifactManager.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/common/DefaultArchetypeArtifactManager.java
@@ -19,6 +19,7 @@ package org.apache.maven.archetype.common;
  * under the License.
  */
 
+import org.apache.commons.io.IOUtils;
 import org.apache.maven.archetype.downloader.DownloadException;
 import org.apache.maven.archetype.downloader.DownloadNotFoundException;
 import org.apache.maven.archetype.downloader.Downloader;
@@ -299,6 +300,25 @@ public class DefaultArchetypeArtifactManager
         }
     }
 
+    public String getPostGenerationScript( File archetypeFile ) throws UnknownArchetype
+    {
+        ZipFile zipFile = null;
+        try
+        {
+            zipFile = getArchetypeZipFile( archetypeFile );
+            Reader reader = getDescriptorReader( zipFile, Constants.ARCHETYPE_POST_GENERATION_SCRIPT );
+            return reader == null ? null : IOUtils.toString( reader );
+        }
+        catch ( IOException e )
+        {
+            throw new UnknownArchetype( e );
+        }
+        finally
+        {
+            closeZipFile( zipFile );
+        }
+    }
+
     public ArchetypeDescriptor getFileSetArchetypeDescriptor( File archetypeFile )
         throws UnknownArchetype
     {

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java b/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
index 304a2a8..e755749 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
@@ -19,6 +19,7 @@ package org.apache.maven.archetype.creator;
  * under the License.
  */
 
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.maven.archetype.ArchetypeCreationRequest;
 import org.apache.maven.archetype.ArchetypeCreationResult;
 import org.apache.maven.archetype.common.ArchetypeFilesResolver;
@@ -147,6 +148,22 @@ public class FilesetArchetypeCreator
             File archetypeDescriptorFile = new File( archetypeResourcesDirectory, Constants.ARCHETYPE_DESCRIPTOR );
             archetypeDescriptorFile.getParentFile().mkdirs();
 
+            File archetypePostGenerationScript =
+                new File( archetypeResourcesDirectory, Constants.ARCHETYPE_POST_GENERATION_SCRIPT );
+            archetypePostGenerationScript.getParentFile().mkdirs();
+
+            if ( request.getProject().getBuild() != null && CollectionUtils.isNotEmpty(
+                request.getProject().getBuild().getResources() ) )
+            {
+                File inputFile = new File(
+                    request.getProject().getBuild().getResources().get( 0 ).getDirectory() + File.separator
+                        + Constants.ARCHETYPE_POST_GENERATION_SCRIPT );
+                if ( inputFile.exists() )
+                {
+                    FileUtils.copyFile( inputFile, archetypePostGenerationScript );
+                }
+            }
+
             getLogger().debug( "Starting archetype's descriptor " + project.getArtifactId() );
             ArchetypeDescriptor archetypeDescriptor = new ArchetypeDescriptor();
 

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java b/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java
index 7ebe3c8..154015f 100644
--- a/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java
+++ b/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java
@@ -19,6 +19,8 @@ package org.apache.maven.archetype.generator;
  * under the License.
  */
 
+import groovy.lang.Binding;
+import groovy.lang.GroovyShell;
 import org.apache.maven.archetype.ArchetypeGenerationRequest;
 import org.apache.maven.archetype.common.ArchetypeArtifactManager;
 import org.apache.maven.archetype.common.ArchetypeFilesResolver;
@@ -59,6 +61,7 @@ import java.io.OutputStreamWriter;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.ArrayList;
+import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
 import java.util.regex.Pattern;
@@ -204,12 +207,34 @@ public class DefaultFilesetArchetypeGenerator
                                       outputDirectoryFile, packageName, archetypeDescriptor, context );
             }
 
+            String postGenerationScript = archetypeArtifactManager.getPostGenerationScript( archetypeFile );
+            if ( postGenerationScript != null )
+            {
+                getLogger().info( "Executing post-generation script" );
+                Binding binding = new Binding();
+
+                if ( request.getProperties() != null )
+                {
+
+                    request.getProperties().putAll( System.getProperties() );
+                    Enumeration e = request.getProperties().propertyNames();
+                    while ( e.hasMoreElements() )
+                    {
+                        String key = (String) e.nextElement();
+                        binding.setVariable( key, request.getProperties().getProperty( key ) );
+                    }
+                }
+
+                GroovyShell shell = new GroovyShell( binding );
+                shell.evaluate( postGenerationScript );
+            }
+
             // ----------------------------------------------------------------------
             // Log message on OldArchetype creation
             // ----------------------------------------------------------------------
             if ( getLogger().isInfoEnabled() )
             {
-                getLogger().info( "project created from Archetype in dir: " + outputDirectoryFile.getAbsolutePath() );
+                getLogger().info( "Project created from Archetype in dir: " + outputDirectoryFile.getAbsolutePath() );
             }
         }
         catch ( FileNotFoundException ex )
@@ -468,7 +493,7 @@ public class DefaultFilesetArchetypeGenerator
 
             if ( maybeVelocityExpression( value ) )
             {
-                value =  evaluateExpression( context, key, value );
+                value = evaluateExpression( context, key, value );
             }
 
             context.put( key, value );

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/archetype-post-generate.groovy
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/archetype-post-generate.groovy b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/archetype-post-generate.groovy
new file mode 100644
index 0000000..7b01980
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/archetype-post-generate.groovy
@@ -0,0 +1,6 @@
+println "Executing the post_create script...";
+
+def projectFolder = this.'user.dir' + this.'file.separator' + "target/test-classes/projects" + this.'file.separator' + "generate-13" + this.'file.separator' + "file-value" + this.'file.separator';
+
+println "Removing file: ${projectFolder}src/main/java/file/value/package/ToDelete.java";
+new File(projectFolder + "src/main/java/file/value/package/ToDelete.java").delete();

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/maven/archetype-metadata.xml
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/maven/archetype-metadata.xml b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/maven/archetype-metadata.xml
new file mode 100644
index 0000000..6b2523a
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/maven/archetype-metadata.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<archetype-descriptor name="fileset" partial="false">
+
+  <requiredProperties>
+    <requiredProperty key="property-with-default-1">
+      <defaultValue>default-value</defaultValue>
+    </requiredProperty>
+    <requiredProperty key="property-with-default-2">
+      <defaultValue>default-value</defaultValue>
+    </requiredProperty>
+    <requiredProperty key="property-with-default-3">
+      <defaultValue>default-value</defaultValue>
+    </requiredProperty>
+    <requiredProperty key="property-with-default-4">
+      <defaultValue>default-value</defaultValue>
+    </requiredProperty>
+    <requiredProperty key="property-without-default-1"/>
+    <requiredProperty key="property-without-default-2"/>
+    <requiredProperty key="property-without-default-3"/>
+    <requiredProperty key="property-without-default-4"/>
+  </requiredProperties>
+
+  <fileSets>
+    <fileSet filtered="true" packaged="true">
+      <directory>src/main/java</directory>
+      <includes>
+        <include>**/*.java</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="false" packaged="true">
+      <directory>src/main/java</directory>
+      <includes>
+        <include>**/*.ogg</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="true" packaged="false">
+      <directory>src/main/resources</directory>
+      <includes>
+        <include>**/*.properties</include>
+        <include>**/*.txt</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="false" packaged="false">
+      <directory>src/main/resources</directory>
+      <includes>
+        <include>**/*.png</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="true" packaged="false">
+      <directory>src/site</directory>
+      <includes>
+        <include>**/*.xml</include>
+        <include>**/*.apt</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="true">
+      <directory></directory>
+      <includes>
+        <include>.classpath</include>
+        <include>*.xml</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="false" packaged="false">
+      <directory>src/main/toto</directory>
+      <includes>
+        <include>**/*</include>
+      </includes>
+    </fileSet>
+  </fileSets>
+
+  <modules>
+    <module name="subproject" id="subproject" dir="subproject">
+      <fileSets>
+        <fileSet filtered="true" packaged="true">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" packaged="false">
+          <directory>src/main/toto</directory>
+          <includes>
+            <include>**/*</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+
+      <modules>
+        <module name="subsubproject" id="subsubproject" dir="subsubproject">
+          <fileSets>
+            <fileSet filtered="true" packaged="true">
+              <directory>src/main/java</directory>
+              <includes>
+                <include>**/*.java</include>
+              </includes>
+            </fileSet>
+          </fileSets>
+        </module>
+      </modules>
+    </module>
+  </modules>
+
+</archetype-descriptor>

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/maven/archetypes/fileset_with_postscript/pom.xml
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/maven/archetypes/fileset_with_postscript/pom.xml b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/maven/archetypes/fileset_with_postscript/pom.xml
new file mode 100644
index 0000000..b7422de
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/META-INF/maven/archetypes/fileset_with_postscript/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>archetypes</groupId>
+  <artifactId>fileset</artifactId>
+  <version>1.0</version>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/pom.xml b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/pom.xml
new file mode 100644
index 0000000..6c34c7b
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>${groupId}</groupId>
+  <artifactId>${artifactId}</artifactId>
+  <version>${version}</version>
+
+  <name>Maven archetype Test</name>
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>subproject</module>
+  </modules>
+
+</project>

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/profiles.xml
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/profiles.xml b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/profiles.xml
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/profiles.xml
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/App.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/App.java b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/App.java
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/App.java
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/App.ogg
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/App.ogg b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/App.ogg
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/App.ogg
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/ToDelete.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/ToDelete.java b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/ToDelete.java
new file mode 100644
index 0000000..3c74a80
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/ToDelete.java
@@ -0,0 +1 @@
+This file must be deleted by the post-create script.

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/inner/package/App2.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/inner/package/App2.java b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/inner/package/App2.java
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/java/inner/package/App2.java
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/App.properties
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/App.properties b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/App.properties
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/App.properties
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/__artifactId__/touch.txt
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/__artifactId__/touch.txt b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/__artifactId__/touch.txt
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/__artifactId__/touch.txt
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/__rootArtifactId__/touch_root.txt
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/__rootArtifactId__/touch_root.txt b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/__rootArtifactId__/touch_root.txt
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/__rootArtifactId__/touch_root.txt
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/some-dir/App.png
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/some-dir/App.png b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/some-dir/App.png
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/main/resources/some-dir/App.png
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/site/apt/usage.apt
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/site/apt/usage.apt b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/site/apt/usage.apt
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/site/apt/usage.apt
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/site/site.xml
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/site/site.xml b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/site/site.xml
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/src/site/site.xml
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/pom.xml
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/pom.xml b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/pom.xml
new file mode 100644
index 0000000..f74a253
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${parentArtifactId}</artifactId>
+    <version>${version}</version>
+  </parent>
+
+  <groupId>${groupId}</groupId>
+  <artifactId>${artifactId}</artifactId>
+  <version>${version}</version>
+
+  <name>Maven archetype Test Subfolder</name>
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>subsubproject</module>
+  </modules>
+
+</project>

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/src/main/java/App.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/src/main/java/App.java b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/src/main/java/App.java
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/src/main/java/App.java
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/pom.xml
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/pom.xml b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/pom.xml
new file mode 100644
index 0000000..dfbf01b
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/pom.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>${groupId}</groupId>
+    <artifactId>${parentArtifactId}</artifactId>
+    <version>${version}</version>
+  </parent>
+
+  <groupId>${groupId}</groupId>
+  <artifactId>${artifactId}</artifactId>
+  <version>${version}</version>
+
+  <name>Maven archetype Test Subsubfolder</name>
+  <packaging>jar</packaging>
+
+</project>

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/App.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/App.java b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/App.java
new file mode 100644
index 0000000..d34de6e
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/App.java
@@ -0,0 +1,13 @@
+groupId=${groupId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__property-with-default-1__.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__property-with-default-1__.java b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__property-with-default-1__.java
new file mode 100644
index 0000000..c6837ac
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/ArbitraryProperty-__property-with-default-1__.java
@@ -0,0 +1,14 @@
+groupId=${groupId}
+rootArtifactId=${rootArtifactId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__property-with-default-2__.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__property-with-default-2__.java b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__property-with-default-2__.java
new file mode 100644
index 0000000..c6837ac
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/SkipsUndefinedProperty-__undefined-property__-__property-with-default-2__.java
@@ -0,0 +1,14 @@
+groupId=${groupId}
+rootArtifactId=${rootArtifactId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/__rootArtifactId__/inner/__artifactId__/innest/Some__rootArtifactId__Class__artifactId__.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/__rootArtifactId__/inner/__artifactId__/innest/Some__rootArtifactId__Class__artifactId__.java b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/__rootArtifactId__/inner/__artifactId__/innest/Some__rootArtifactId__Class__artifactId__.java
new file mode 100644
index 0000000..c6837ac
--- /dev/null
+++ b/archetype-common/src/test/archetypes/fileset_with_postscript-1.0/archetype-resources/subproject/subsubproject/src/main/java/__rootArtifactId__/inner/__artifactId__/innest/Some__rootArtifactId__Class__artifactId__.java
@@ -0,0 +1,14 @@
+groupId=${groupId}
+rootArtifactId=${rootArtifactId}
+artifactId=${artifactId}
+version=${version}
+package=${package}
+packageInPathFormat=${packageInPathFormat}
+property-without-default-1=${property-without-default-1}
+property-without-default-2=${property-without-default-2}
+property-without-default-3=${property-without-default-3}
+property-without-default-4=${property-without-default-4}
+property-with-default-1=${property-with-default-1}
+property-with-default-2=${property-with-default-2}
+property-with-default-3=${property-with-default-3}
+property-with-default-4=${property-with-default-4}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/61263a78/archetype-common/src/test/java/org/apache/maven/archetype/generator/DefaultArchetypeGeneratorTest.java
----------------------------------------------------------------------
diff --git a/archetype-common/src/test/java/org/apache/maven/archetype/generator/DefaultArchetypeGeneratorTest.java b/archetype-common/src/test/java/org/apache/maven/archetype/generator/DefaultArchetypeGeneratorTest.java
index 284f80d..c74f8ea 100644
--- a/archetype-common/src/test/java/org/apache/maven/archetype/generator/DefaultArchetypeGeneratorTest.java
+++ b/archetype-common/src/test/java/org/apache/maven/archetype/generator/DefaultArchetypeGeneratorTest.java
@@ -57,6 +57,9 @@ public class DefaultArchetypeGeneratorTest
 
     private final static Archetype ARCHETYPE_OLD = new Archetype( "archetypes", "old", "1.0" );
 
+    private final static Archetype ARCHETYPE_FILESET_WITH_POSTCREATE_SCRIPT =
+        new Archetype( "archetypes", "fileset_with_postscript", "1.0" );
+
     private final static Properties ADDITIONAL_PROPERTIES = new Properties();
     static
     {
@@ -421,6 +424,88 @@ public class DefaultArchetypeGeneratorTest
                         && result.getCause().getMessage().endsWith( "Property property-without-default-4 is missing." ) );
     }
 
+    public void testGenerateArchetypeWithPostScriptIncluded()
+        throws Exception
+    {
+        System.out.println( "testGenerateArchetypeWithPostScriptIncluded" );
+
+        ArchetypeGenerationRequest request =
+            createArchetypeGenerationRequest( "generate-13", ARCHETYPE_FILESET_WITH_POSTCREATE_SCRIPT );
+
+        File projectFile = new File( projectDirectory, "pom.xml" );
+
+        FileUtils.forceDelete( projectDirectory );
+
+        generateProjectFromArchetype( request );
+
+        assertTemplateContentGeneratedWithFileSetArchetype( "src/main/java/file/value/package/App.java", "file-value" );
+        assertTemplateContentGeneratedWithFileSetArchetype( "src/main/java/file/value/package/inner/package/App2.java",
+                                                            "file-value" );
+
+        assertTemplateCopiedWithFileSetArchetype( "src/main/java/file/value/package/App.ogg" );
+
+        File templateFile = new File( projectDirectory, "src/main/java/file/value/package/ToDelete.java" );
+        assertFalse( templateFile.exists() );
+
+        assertTemplateContentGeneratedWithFileSetArchetype( "src/main/resources/App.properties", "file-value" );
+        assertTemplateContentGeneratedWithFileSetArchetype( "src/main/resources/file-value/touch.txt", "file-value" );
+        assertTemplateContentGeneratedWithFileSetArchetype( "src/main/resources/file-value/touch_root.txt",
+                                                            "file-value" );
+
+        assertTemplateCopiedWithFileSetArchetype( "src/main/resources/some-dir/App.png" );
+
+        assertTemplateContentGeneratedWithFileSetArchetype( "src/site/site.xml", "file-value" );
+        assertTemplateContentGeneratedWithFileSetArchetype( "src/site/apt/usage.apt", "file-value" );
+        assertTemplateContentGeneratedWithFileSetArchetype( ".classpath", "file-value" );
+        assertTemplateContentGeneratedWithFileSetArchetype( "profiles.xml", "file-value" );
+
+        Model model = readPom( projectFile );
+        assertNull( model.getParent() );
+        assertEquals( "file-value", model.getGroupId() );
+        assertEquals( "file-value", model.getArtifactId() );
+        assertEquals( "file-value", model.getVersion() );
+
+        assertTemplateContentGeneratedWithFileSetArchetype( "subproject/src/main/java/file/value/package/App.java",
+                                                            "subproject" );
+
+        model = readPom( new File( projectDirectory, "subproject/pom.xml" ) );
+        assertNotNull( model.getParent() );
+        assertEquals( "file-value", model.getParent().getGroupId() );
+        assertEquals( "file-value", model.getParent().getArtifactId() );
+        assertEquals( "file-value", model.getParent().getVersion() );
+        assertEquals( "file-value", model.getGroupId() );
+        assertEquals( "subproject", model.getArtifactId() );
+        assertEquals( "file-value", model.getVersion() );
+
+        assertTemplateContentGeneratedWithFileSetArchetype(
+            "subproject/subsubproject/src/main/java/file/value/package/App.java", "subsubproject" );
+
+        assertTemplateContentGeneratedWithFileSetArchetype( "subproject/subsubproject/src/main/java/file/value/package/"
+                                                                + "file-value/inner/subsubproject/innest/Somefile-valueClasssubsubproject.java",
+                                                            "subsubproject" );
+
+        assertTemplateContentGeneratedWithFileSetArchetype( "subproject/subsubproject/src/main/java/file/value/package/"
+                                                            /* + "file-value/inner/subsubproject/innest/" + */
+                                                                + "ArbitraryProperty-file-value.java",
+                                                            "subsubproject" );
+
+        // Test that undefined properties are safely ignored (and skipped)
+        assertTemplateContentGeneratedWithFileSetArchetype( "subproject/subsubproject/src/main/java/file/value/package/"
+                                                            /* + "file-value/inner/subsubproject/innest/" + */
+                                                                + "SkipsUndefinedProperty-__undefined-property__-file-value.java",
+                                                            "subsubproject" );
+
+        model = readPom( new File( projectDirectory, "subproject/subsubproject/pom.xml" ) );
+        assertNotNull( model.getParent() );
+        assertEquals( "file-value", model.getParent().getGroupId() );
+        assertEquals( "subproject", model.getParent().getArtifactId() );
+        assertEquals( "file-value", model.getParent().getVersion() );
+        assertEquals( "file-value", model.getGroupId() );
+        assertEquals( "subsubproject", model.getArtifactId() );
+        assertEquals( "file-value", model.getVersion() );
+
+    }
+
     protected void tearDown()
         throws Exception
     {