http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/a02e9922/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripWithProxyTest.java
----------------------------------------------------------------------
diff --git 
a/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripWithProxyTest.java
 
b/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripWithProxyTest.java
deleted file mode 100644
index a58b828..0000000
--- 
a/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripWithProxyTest.java
+++ /dev/null
@@ -1,246 +0,0 @@
-package org.apache.maven.archetype.test;
-
-/*
- * 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.
- */
-
-import org.apache.commons.io.IOUtils;
-import org.apache.maven.archetype.ArchetypeCreationRequest;
-import org.apache.maven.archetype.ArchetypeCreationResult;
-import org.apache.maven.archetype.ArchetypeGenerationRequest;
-import org.apache.maven.archetype.ArchetypeGenerationResult;
-import org.apache.maven.archetype.ArchetypeManager;
-import org.apache.maven.archetype.catalog.Archetype;
-import org.apache.maven.archetype.catalog.ArchetypeCatalog;
-import org.apache.maven.archetype.catalog.io.xpp3.ArchetypeCatalogXpp3Writer;
-import org.apache.maven.archetype.common.ArchetypeRegistryManager;
-import org.apache.maven.artifact.manager.WagonManager;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.model.Model;
-import org.apache.maven.project.DefaultProjectBuilderConfiguration;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.interpolation.ModelInterpolator;
-import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.StringUtils;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.webapp.WebAppContext;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.OutputStream;
-import java.io.Writer;
-import java.util.Properties;
-
-/**
- * @author Jason van Zyl
- */
-public class ArchetyperRoundtripWithProxyTest
-    extends PlexusTestCase
-{
-    Server proxyServer;
-
-    int proxyPort;
-
-    Server server;
-
-    int port;
-
-    public void testArchetyper()
-        throws Exception
-    {
-        ArchetypeManager archetype = (ArchetypeManager) lookup( 
ArchetypeManager.ROLE );
-
-        ArchetypeRegistryManager registryManager = (ArchetypeRegistryManager) 
lookup( ArchetypeRegistryManager.ROLE );
-
-        MavenProjectBuilder projectBuilder = (MavenProjectBuilder) lookup( 
MavenProjectBuilder.ROLE );
-
-        ArtifactRepository localRepository = registryManager.createRepository( 
new File( getBasedir(),
-                                                                               
          "target" + File.separator
-                                                                               
              + "test-classes"
-                                                                               
              + File.separator
-                                                                               
              + "repositories"
-                                                                               
              + File.separator
-                                                                               
              + "local" ).toURI().toURL().toExternalForm(),
-                                                                               
"local-repo" );
-        ArtifactRepository centralRepository = 
registryManager.createRepository( new File( getBasedir(),
-                                                                               
            "target" + File.separator
-                                                                               
                + "test-classes"
-                                                                               
                + File.separator
-                                                                               
                + "repositories"
-                                                                               
                + File.separator
-                                                                               
                + "central" ).toURI().toURL().toExternalForm(),
-                                                                               
  "central-repo" );
-
-        // (1) create a project from scratch
-        // (2) create an archetype from the project
-        // (3) create our own archetype catalog properties in memory
-        // (4) create our own archetype catalog describing the archetype we 
just created
-        // (5) deploy the archetype we just created
-        // (6) create a project form the archetype we just created
-        // 
------------------------------------------------------------------------
-        //
-        // 
------------------------------------------------------------------------
-        // (1) create a project from scratch
-//        File sourceProject = new File( getBasedir(  ), 
"target/test-classes/projects/roundtrip-1-project" );
-
-        File workingProject = new File( getBasedir(),
-                                        "target" + File.separator + 
"test-classes" + File.separator + "projects"
-                                            + File.separator + 
"roundtrip-2-project" );
-        FileUtils.forceDelete( new File( workingProject, "target" ) );
-
-        // (2) create an archetype from the project
-        File pom = new File( workingProject, "pom.xml" );
-
-        MavenProject project = projectBuilder.build( pom, localRepository, 
null );
-
-        ArchetypeCreationRequest acr = new 
ArchetypeCreationRequest().setProject( project ).
-            setLocalRepository( localRepository ).setPostPhase( "package" );
-
-        ArchetypeCreationResult creationResult = 
archetype.createArchetypeFromProject( acr );
-
-        if ( creationResult.getCause() != null )
-        {
-            throw creationResult.getCause();
-        }
-
-        // (3) create our own archetype catalog properties in memory
-        File catalogDirectory = new File( getBasedir(), "target" + 
File.separator + "catalog" );
-
-        File catalogFile = new File( catalogDirectory, "archetype-catalog.xml" 
);
-
-        File catalogProperties = new File( catalogDirectory, 
"archetype-catalog.properties" );
-
-        catalogDirectory.mkdirs();
-
-        Properties p = new Properties();
-        p.setProperty( "sources", "catalog" );
-        p.setProperty( "catalog.file", catalogFile.getAbsolutePath() );
-        OutputStream os = new FileOutputStream( catalogProperties );
-        p.store( os, "Generated catalog properties" );
-
-        // (5) install the archetype we just created
-        File generatedArchetypeDirectory = new File( project.getBasedir(),
-                                                     "target" + File.separator 
+ "generated-sources" + File.separator
-                                                         + "archetype" );
-        File generatedArchetypePom = new File( generatedArchetypeDirectory, 
"pom.xml" );
-        MavenProject generatedArchetypeProject = projectBuilder.build( 
generatedArchetypePom, localRepository, null );
-        ModelInterpolator modelInterpolator = (ModelInterpolator)lookup( 
ModelInterpolator.ROLE );
-        Model generatedArchetypeModel = modelInterpolator.interpolate( 
generatedArchetypeProject.getModel(), generatedArchetypePom.getParentFile(), 
new DefaultProjectBuilderConfiguration(), true );
-
-        File archetypeDirectory =
-            new File( generatedArchetypeDirectory, "src" + File.separator + 
"main" + File.separator + "resources" );
-
-        File archetypeArchive = archetype.archiveArchetype( 
archetypeDirectory, new File(
-            generatedArchetypeModel.getBuild().getDirectory() ),
-                                                            
generatedArchetypeModel.getBuild().getFinalName() );
-
-        String baseName =
-            StringUtils.replace( generatedArchetypeProject.getGroupId(), ".", 
File.separator ) + File.separator
-                + generatedArchetypeProject.getArtifactId() + File.separator + 
generatedArchetypeProject.getVersion()
-                + File.separator + 
generatedArchetypeModel.getBuild().getFinalName();
-        File archetypeInRepository = new File( centralRepository.getBasedir(), 
baseName + ".jar" );
-        File archetypePomInRepository = new File( 
centralRepository.getBasedir(), baseName + ".pom" );
-        archetypeInRepository.getParentFile().mkdirs();
-        FileUtils.copyFile( archetypeArchive, archetypeInRepository );
-        FileUtils.copyFile( generatedArchetypePom, archetypePomInRepository );
-
-        // (4) create our own archetype catalog describing the archetype we 
just created
-        ArchetypeCatalog catalog = new ArchetypeCatalog();
-        Archetype generatedArchetype = new Archetype();
-        generatedArchetype.setGroupId( generatedArchetypeProject.getGroupId() 
);
-        generatedArchetype.setArtifactId( 
generatedArchetypeProject.getArtifactId() );
-        generatedArchetype.setVersion( generatedArchetypeProject.getVersion() 
);
-        generatedArchetype.setRepository( "http://localhost:"; + port + "/repo" 
);
-        catalog.addArchetype( generatedArchetype );
-
-        ArchetypeCatalogXpp3Writer catalogWriter = new 
ArchetypeCatalogXpp3Writer();
-        Writer writer = new FileWriter( catalogFile );
-        catalogWriter.write( writer, catalog );
-        IOUtils.closeQuietly( writer );
-
-        // (6) create a project form the archetype we just created
-        String outputDirectory = new File( getBasedir(),
-                                           "target" + File.separator + 
"test-classes" + File.separator + "projects"
-                                               + File.separator + 
"roundtrip-2-recreatedproject" ).getAbsolutePath();
-        FileUtils.forceDelete( outputDirectory );
-
-        WagonManager manager = (WagonManager) lookup( 
WagonManager.class.getName() );
-        manager.addProxy( "http", "localhost", proxyPort, null, null, null );
-
-        ArchetypeGenerationRequest agr =
-            new ArchetypeGenerationRequest().setArchetypeGroupId( 
generatedArchetypeProject.getGroupId() ).
-                setArchetypeArtifactId( 
generatedArchetypeProject.getArtifactId() ).
-                setArchetypeVersion( generatedArchetypeProject.getVersion() ).
-                setGroupId( "com.mycompany" ).setArtifactId( "myapp" 
).setVersion( "1.0-SNAPSHOT" ).
-                setPackage( "com.mycompany.myapp" ).setOutputDirectory( 
outputDirectory ).
-                setLocalRepository( localRepository ).setArchetypeRepository( 
"http://localhost:"; + port + "/repo" );
-        ArchetypeGenerationResult generationResult = 
archetype.generateProjectFromArchetype( agr );
-
-        if ( generationResult.getCause() != null )
-        {
-            throw generationResult.getCause();
-        }
-
-    }
-
-    public void setUp()
-        throws Exception
-    {
-        super.setUp();
-        // Start Proxy Jetty
-
-        System.setProperty( "org.apache.maven.archetype.repository.directory",
-                            getTestPath( 
"target/test-classes/repositories/central" ) );
-
-        proxyServer = new Server( 0 );
-
-        WebAppContext webappProxy = new WebAppContext();
-        webappProxy.setContextPath( "/" );
-        webappProxy.setWar( "target/wars/archetype-proxy.war" );
-        proxyServer.setHandler( webappProxy );
-
-        proxyServer.start();
-
-        proxyPort = proxyServer.getConnectors()[0].getLocalPort();
-
-        server = new Server( 0 );
-
-        WebAppContext webapp = new WebAppContext();
-        webapp.setContextPath( "/repo" );
-        webapp.setWar( "target/wars/archetype-repository.war" );
-        server.setHandler( webapp );
-
-        server.start();
-
-        port = server.getConnectors()[0].getLocalPort();
-
-    }
-
-    public void tearDown()
-        throws Exception
-    {
-        super.tearDown();
-        // Stop Jettys
-
-        proxyServer.stop();
-        server.stop();
-    }
-}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/a02e9922/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleIT.java
----------------------------------------------------------------------
diff --git 
a/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleIT.java
 
b/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleIT.java
new file mode 100644
index 0000000..f1776cb
--- /dev/null
+++ 
b/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleIT.java
@@ -0,0 +1,317 @@
+package org.apache.maven.archetype.test;
+
+/*
+ * 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.
+ */
+
+import org.apache.commons.io.IOUtils;
+import org.apache.maven.archetype.ArchetypeCreationRequest;
+import org.apache.maven.archetype.ArchetypeCreationResult;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeGenerationResult;
+import org.apache.maven.archetype.ArchetypeManager;
+import org.apache.maven.archetype.catalog.Archetype;
+import org.apache.maven.archetype.catalog.ArchetypeCatalog;
+import org.apache.maven.archetype.catalog.io.xpp3.ArchetypeCatalogXpp3Writer;
+import org.apache.maven.archetype.common.ArchetypeRegistryManager;
+import org.apache.maven.archetype.common.Constants;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.model.Model;
+import org.apache.maven.project.DefaultProjectBuilderConfiguration;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.interpolation.ModelInterpolator;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.webapp.WebAppContext;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.util.Iterator;
+import java.util.Properties;
+
+/**
+ * @author Jason van Zyl
+ */
+public class RoundtripMultiModuleIT
+    extends PlexusTestCase
+{
+    public void testArchetyper()
+        throws Exception
+    {
+
+        ArchetypeManager archetype = (ArchetypeManager) lookup( 
ArchetypeManager.ROLE );
+
+        ArchetypeRegistryManager registryManager = (ArchetypeRegistryManager) 
lookup( ArchetypeRegistryManager.ROLE );
+
+        MavenProjectBuilder projectBuilder = (MavenProjectBuilder) lookup( 
MavenProjectBuilder.ROLE );
+
+        ArtifactRepository localRepository = registryManager.createRepository( 
new File( getBasedir(),
+                                                                               
          "target" + File.separator
+                                                                               
              + "test-classes"
+                                                                               
              + File.separator
+                                                                               
              + "repositories"
+                                                                               
              + File.separator
+                                                                               
              + "local" ).toURI().toURL().toExternalForm(),
+                                                                               
"local-repo" );
+
+        ArtifactRepository centralRepository = 
registryManager.createRepository( new File( getBasedir(),
+                                                                               
            "target" + File.separator
+                                                                               
                + "test-classes"
+                                                                               
                + File.separator
+                                                                               
                + "repositories"
+                                                                               
                + File.separator
+                                                                               
                + "central" ).toURI().toURL().toExternalForm(),
+                                                                               
  "central-repo" );
+
+        // (1) create a project from scratch
+        // (2) create an archetype from the project
+        // (3) create our own archetype catalog properties in memory
+        // (4) create our own archetype catalog describing the archetype we 
just created
+        // (5) deploy the archetype we just created
+        // (6) create a project form the archetype we just created
+        // 
------------------------------------------------------------------------
+        //
+        // 
------------------------------------------------------------------------
+        // (1) create a project from scratch
+//        File sourceProject = new File( getBasedir(  ), 
"target/test-classes/projects/roundtrip-1-project" );
+
+        File workingProject = new File( getBasedir(),
+                                        "target" + File.separator + 
"test-classes" + File.separator + "projects"
+                                            + File.separator + 
"roundtrip-multi" );
+        FileUtils.forceDelete( new File( workingProject, "target" ) );
+
+        // (2) create an archetype from the project
+        File pom = new File( workingProject, "pom.xml" );
+
+        MavenProject project = projectBuilder.build( pom, localRepository, 
null );
+
+        ModelInterpolator modelInterpolator = (ModelInterpolator)lookup( 
ModelInterpolator.ROLE );
+
+        ArchetypeCreationRequest acr =
+            new ArchetypeCreationRequest().setProject( project 
).setLocalRepository( localRepository ).setFiltereds(
+                Constants.DEFAULT_FILTERED_EXTENSIONS ).setLanguages( 
Constants.DEFAULT_LANGUAGES ).setPostPhase(
+                "package" );
+
+        ArchetypeCreationResult creationResult = 
archetype.createArchetypeFromProject( acr );
+
+        if ( creationResult.getCause() != null )
+        {
+            throw creationResult.getCause();
+        }
+        else
+        {
+            assertArchetypeCreated( workingProject );
+        }
+
+        // (3) create our own archetype catalog properties in memory
+        File catalogDirectory = new File( getBasedir(), "target" + 
File.separator + "catalog" );
+
+        File catalogFile = new File( catalogDirectory, "archetype-catalog.xml" 
);
+
+        File catalogProperties = new File( catalogDirectory, 
"archetype-catalog.properties" );
+
+        catalogDirectory.mkdirs();
+
+        Properties p = new Properties();
+        p.setProperty( "sources", "catalog" );
+        p.setProperty( "catalog.file", catalogFile.getAbsolutePath() );
+        OutputStream os = new FileOutputStream( catalogProperties );
+        p.store( os, "Generated catalog properties" );
+
+        // (5) install the archetype we just created
+        File generatedArchetypeDirectory = new File( project.getBasedir(),
+                                                     "target" + File.separator 
+ "generated-sources" + File.separator
+                                                         + "archetype" );
+        File generatedArchetypePom = new File( generatedArchetypeDirectory, 
"pom.xml" );
+        MavenProject generatedArchetypeProject = projectBuilder.build( 
generatedArchetypePom, localRepository, null );
+        Model generatedModel = modelInterpolator.interpolate( 
generatedArchetypeProject.getModel(), generatedArchetypePom.getParentFile(), 
new DefaultProjectBuilderConfiguration(), true );
+
+        File archetypeDirectory =
+            new File( generatedArchetypeDirectory, "src" + File.separator + 
"main" + File.separator + "resources" );
+
+        File archetypeArchive = archetype.archiveArchetype( archetypeDirectory,
+                new File( generatedModel.getBuild().getDirectory() ),
+                        generatedModel.getBuild().getFinalName() );
+
+        String baseName =
+            StringUtils.replace( generatedArchetypeProject.getGroupId(), ".", 
File.separator ) + File.separator
+                + generatedArchetypeProject.getArtifactId() + File.separator + 
generatedArchetypeProject.getVersion()
+                + File.separator + generatedModel.getBuild().getFinalName();
+        File archetypeInRepository = new File( centralRepository.getBasedir(), 
baseName + ".jar" );
+        File archetypePomInRepository = new File( 
centralRepository.getBasedir(), baseName + ".pom" );
+        archetypeInRepository.getParentFile().mkdirs();
+        FileUtils.copyFile( archetypeArchive, archetypeInRepository );
+        FileUtils.copyFile( generatedArchetypePom, archetypePomInRepository );
+
+        // (4) create our own archetype catalog describing the archetype we 
just created
+        ArchetypeCatalog catalog = new ArchetypeCatalog();
+        Archetype generatedArchetype = new Archetype();
+        generatedArchetype.setGroupId( generatedArchetypeProject.getGroupId() 
);
+        generatedArchetype.setArtifactId( 
generatedArchetypeProject.getArtifactId() );
+        generatedArchetype.setVersion( generatedArchetypeProject.getVersion() 
);
+        generatedArchetype.setRepository( "http://localhost:"; + port + "/repo" 
);
+        catalog.addArchetype( generatedArchetype );
+
+        ArchetypeCatalogXpp3Writer catalogWriter = new 
ArchetypeCatalogXpp3Writer();
+        Writer writer = new FileWriter( catalogFile );
+        catalogWriter.write( writer, catalog );
+        IOUtils.closeQuietly( writer );
+
+        // (6) create a project form the archetype we just created
+        String outputDirectory = new File( getBasedir(),
+                                           "target" + File.separator + 
"test-classes" + File.separator + "projects"
+                                               + File.separator + 
"roundtrip-multi-recreated" ).getAbsolutePath();
+        FileUtils.forceDelete( outputDirectory );
+
+        ArchetypeGenerationRequest agr = new 
ArchetypeGenerationRequest().setArchetypeGroupId(
+            generatedArchetypeProject.getGroupId() ).setArchetypeArtifactId(
+            generatedArchetypeProject.getArtifactId() ).setArchetypeVersion(
+            generatedArchetypeProject.getVersion() ).setGroupId( 
"com.mycompany" ).setArtifactId( "myapp" ).setVersion(
+            "1.0-SNAPSHOT" ).setPackage( "com.mycompany.myapp" 
).setOutputDirectory(
+            outputDirectory ).setLocalRepository( localRepository 
).setArchetypeRepository(
+            "http://localhost:"; + port + "/repo/" );
+        ArchetypeGenerationResult generationResult = 
archetype.generateProjectFromArchetype( agr );
+
+        if ( generationResult.getCause() != null )
+        {
+            fail( generationResult.getCause().getMessage() );
+        }
+
+        String myapp = outputDirectory + File.separator + "myapp" + 
File.separator;
+        assertTrue( new File( myapp + "myapp-api", ".classpath" ).exists() );
+        assertTrue( new File( myapp + "myapp-cli", ".classpath" ).exists() );
+        assertTrue( new File( myapp + "myapp-core", ".classpath" ).exists() );
+        assertTrue( new File( myapp + "myapp-model", ".classpath" ).exists() );
+        assertTrue( new File( myapp + File.separator + "myapp-stores" + 
File.separator + "myapp-store-memory",
+                              ".classpath" ).exists() );
+        assertTrue(
+            new File( myapp + "myapp-stores" + File.separator + 
"myapp-store-xstream", ".classpath" ).exists() );
+
+        assertTrue( new File( myapp + "myapp-api", ".checkstyle" ).exists() );
+        assertTrue( new File( myapp + "myapp-cli", ".checkstyle" ).exists() );
+        assertTrue( new File( myapp + "myapp-core", ".checkstyle" ).exists() );
+        assertTrue( new File( myapp + "myapp-model", ".checkstyle" ).exists() 
);
+        assertTrue(
+            new File( myapp + "myapp-stores" + File.separator + 
"myapp-store-memory", ".checkstyle" ).exists() );
+        assertTrue(
+            new File( myapp + "myapp-stores" + File.separator + 
"myapp-store-xstream", ".checkstyle" ).exists() );
+
+    }
+
+    private Server server;
+
+    int port;
+
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+        // Start Jetty
+
+        System.setProperty( "org.apache.maven.archetype.repository.directory",
+                            getTestPath( 
"target/test-classes/repositories/central" ) );
+
+        server = new Server( 0 );
+
+        WebAppContext webapp = new WebAppContext();
+        webapp.setContextPath( "/repo" );
+        webapp.setWar( "target/wars/archetype-repository.war" );
+        server.setHandler( webapp );
+
+        server.start();
+
+        port = server.getConnectors()[0].getLocalPort();
+
+
+    }
+
+    public void tearDown()
+        throws Exception
+    {
+        super.tearDown();
+        // Stop Jetty
+
+        server.stop();
+    }
+
+    private void assertArchetypeCreated( File workingProject )
+    {
+        File archetypeSourcesDirectory = FileUtils.resolveFile( 
workingProject, "target/generated-sources/archetype" );
+        File archetypeResourcesDirectory =
+            FileUtils.resolveFile( archetypeSourcesDirectory, 
"src/main/resources/archetype-resources" );
+        File archetypeMetadataDirectory =
+            FileUtils.resolveFile( archetypeSourcesDirectory, 
"src/main/resources/META-INF/maven" );
+
+        Iterator i = org.apache.commons.io.FileUtils.iterateFiles( 
archetypeSourcesDirectory, null, true );
+        while ( i.hasNext() )
+        {
+            File f = (File) i.next();
+            System.err.println( f.getPath() );
+        }
+
+        File api = FileUtils.resolveFile( archetypeResourcesDirectory, 
"__rootArtifactId__-api" );
+        assertExistDirectory( api );
+        assertExistFile( FileUtils.resolveFile( api, "pom.xml" ) );
+
+        File cli = FileUtils.resolveFile( archetypeResourcesDirectory, 
"__rootArtifactId__-cli" );
+        assertExistDirectory( cli );
+        assertExistFile( FileUtils.resolveFile( cli, "pom.xml" ) );
+
+        File core = FileUtils.resolveFile( archetypeResourcesDirectory, 
"__rootArtifactId__-core" );
+        assertExistDirectory( core );
+        assertExistFile( FileUtils.resolveFile( core, "pom.xml" ) );
+
+        File model = FileUtils.resolveFile( archetypeResourcesDirectory, 
"__rootArtifactId__-model" );
+        assertExistDirectory( model );
+        assertExistFile( FileUtils.resolveFile( model, "pom.xml" ) );
+
+        File stores = FileUtils.resolveFile( archetypeResourcesDirectory, 
"__rootArtifactId__-stores" );
+        assertExistDirectory( stores );
+        assertExistFile( FileUtils.resolveFile( stores, "pom.xml" ) );
+        assertExistDirectory( FileUtils.resolveFile( stores, 
"__rootArtifactId__-store-memory" ) );
+        assertExistFile(
+            FileUtils.resolveFile( FileUtils.resolveFile( stores, 
"__rootArtifactId__-store-memory" ), "pom.xml" ) );
+        assertExistDirectory( FileUtils.resolveFile( stores, 
"__rootArtifactId__-store-xstream" ) );
+        assertExistFile(
+            FileUtils.resolveFile( FileUtils.resolveFile( stores, 
"__rootArtifactId__-store-xstream" ), "pom.xml" ) );
+        assertExistFile( FileUtils.resolveFile( archetypeResourcesDirectory, 
"pom.xml" ) );
+
+        assertExistDirectory( archetypeMetadataDirectory );
+        assertExistFile( FileUtils.resolveFile( archetypeMetadataDirectory, 
"archetype-metadata.xml" ) );
+        assertExistFile( FileUtils.resolveFile( archetypeSourcesDirectory, 
"pom.xml" ) );
+
+    }
+
+    private void assertExistDirectory( File resolveFile )
+    {
+        assertTrue( "resolveFile " + resolveFile + " !exists", 
resolveFile.exists() );
+        assertTrue( "resolveFile " + resolveFile + " !isDirectory", 
resolveFile.isDirectory() );
+    }
+
+    private void assertExistFile( File resolveFile )
+    {
+        assertTrue( "resolveFile " + resolveFile + " !exists", 
resolveFile.exists() );
+        assertTrue( "resolveFile " + resolveFile + " !isFile", 
resolveFile.isFile() );
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-archetype/blob/a02e9922/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleTest.java
----------------------------------------------------------------------
diff --git 
a/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleTest.java
 
b/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleTest.java
deleted file mode 100644
index fd66d35..0000000
--- 
a/archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/RoundtripMultiModuleTest.java
+++ /dev/null
@@ -1,317 +0,0 @@
-package org.apache.maven.archetype.test;
-
-/*
- * 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.
- */
-
-import org.apache.commons.io.IOUtils;
-import org.apache.maven.archetype.ArchetypeCreationRequest;
-import org.apache.maven.archetype.ArchetypeCreationResult;
-import org.apache.maven.archetype.ArchetypeGenerationRequest;
-import org.apache.maven.archetype.ArchetypeGenerationResult;
-import org.apache.maven.archetype.ArchetypeManager;
-import org.apache.maven.archetype.catalog.Archetype;
-import org.apache.maven.archetype.catalog.ArchetypeCatalog;
-import org.apache.maven.archetype.catalog.io.xpp3.ArchetypeCatalogXpp3Writer;
-import org.apache.maven.archetype.common.ArchetypeRegistryManager;
-import org.apache.maven.archetype.common.Constants;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.model.Model;
-import org.apache.maven.project.DefaultProjectBuilderConfiguration;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.interpolation.ModelInterpolator;
-import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.StringUtils;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.webapp.WebAppContext;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.OutputStream;
-import java.io.Writer;
-import java.util.Iterator;
-import java.util.Properties;
-
-/**
- * @author Jason van Zyl
- */
-public class RoundtripMultiModuleTest
-    extends PlexusTestCase
-{
-    public void testArchetyper()
-        throws Exception
-    {
-
-        ArchetypeManager archetype = (ArchetypeManager) lookup( 
ArchetypeManager.ROLE );
-
-        ArchetypeRegistryManager registryManager = (ArchetypeRegistryManager) 
lookup( ArchetypeRegistryManager.ROLE );
-
-        MavenProjectBuilder projectBuilder = (MavenProjectBuilder) lookup( 
MavenProjectBuilder.ROLE );
-
-        ArtifactRepository localRepository = registryManager.createRepository( 
new File( getBasedir(),
-                                                                               
          "target" + File.separator
-                                                                               
              + "test-classes"
-                                                                               
              + File.separator
-                                                                               
              + "repositories"
-                                                                               
              + File.separator
-                                                                               
              + "local" ).toURI().toURL().toExternalForm(),
-                                                                               
"local-repo" );
-
-        ArtifactRepository centralRepository = 
registryManager.createRepository( new File( getBasedir(),
-                                                                               
            "target" + File.separator
-                                                                               
                + "test-classes"
-                                                                               
                + File.separator
-                                                                               
                + "repositories"
-                                                                               
                + File.separator
-                                                                               
                + "central" ).toURI().toURL().toExternalForm(),
-                                                                               
  "central-repo" );
-
-        // (1) create a project from scratch
-        // (2) create an archetype from the project
-        // (3) create our own archetype catalog properties in memory
-        // (4) create our own archetype catalog describing the archetype we 
just created
-        // (5) deploy the archetype we just created
-        // (6) create a project form the archetype we just created
-        // 
------------------------------------------------------------------------
-        //
-        // 
------------------------------------------------------------------------
-        // (1) create a project from scratch
-//        File sourceProject = new File( getBasedir(  ), 
"target/test-classes/projects/roundtrip-1-project" );
-
-        File workingProject = new File( getBasedir(),
-                                        "target" + File.separator + 
"test-classes" + File.separator + "projects"
-                                            + File.separator + 
"roundtrip-multi" );
-        FileUtils.forceDelete( new File( workingProject, "target" ) );
-
-        // (2) create an archetype from the project
-        File pom = new File( workingProject, "pom.xml" );
-
-        MavenProject project = projectBuilder.build( pom, localRepository, 
null );
-
-        ModelInterpolator modelInterpolator = (ModelInterpolator)lookup( 
ModelInterpolator.ROLE );
-
-        ArchetypeCreationRequest acr =
-            new ArchetypeCreationRequest().setProject( project 
).setLocalRepository( localRepository ).setFiltereds(
-                Constants.DEFAULT_FILTERED_EXTENSIONS ).setLanguages( 
Constants.DEFAULT_LANGUAGES ).setPostPhase(
-                "package" );
-
-        ArchetypeCreationResult creationResult = 
archetype.createArchetypeFromProject( acr );
-
-        if ( creationResult.getCause() != null )
-        {
-            throw creationResult.getCause();
-        }
-        else
-        {
-            assertArchetypeCreated( workingProject );
-        }
-
-        // (3) create our own archetype catalog properties in memory
-        File catalogDirectory = new File( getBasedir(), "target" + 
File.separator + "catalog" );
-
-        File catalogFile = new File( catalogDirectory, "archetype-catalog.xml" 
);
-
-        File catalogProperties = new File( catalogDirectory, 
"archetype-catalog.properties" );
-
-        catalogDirectory.mkdirs();
-
-        Properties p = new Properties();
-        p.setProperty( "sources", "catalog" );
-        p.setProperty( "catalog.file", catalogFile.getAbsolutePath() );
-        OutputStream os = new FileOutputStream( catalogProperties );
-        p.store( os, "Generated catalog properties" );
-
-        // (5) install the archetype we just created
-        File generatedArchetypeDirectory = new File( project.getBasedir(),
-                                                     "target" + File.separator 
+ "generated-sources" + File.separator
-                                                         + "archetype" );
-        File generatedArchetypePom = new File( generatedArchetypeDirectory, 
"pom.xml" );
-        MavenProject generatedArchetypeProject = projectBuilder.build( 
generatedArchetypePom, localRepository, null );
-        Model generatedModel = modelInterpolator.interpolate( 
generatedArchetypeProject.getModel(), generatedArchetypePom.getParentFile(), 
new DefaultProjectBuilderConfiguration(), true );
-
-        File archetypeDirectory =
-            new File( generatedArchetypeDirectory, "src" + File.separator + 
"main" + File.separator + "resources" );
-
-        File archetypeArchive = archetype.archiveArchetype( archetypeDirectory,
-                new File( generatedModel.getBuild().getDirectory() ),
-                        generatedModel.getBuild().getFinalName() );
-
-        String baseName =
-            StringUtils.replace( generatedArchetypeProject.getGroupId(), ".", 
File.separator ) + File.separator
-                + generatedArchetypeProject.getArtifactId() + File.separator + 
generatedArchetypeProject.getVersion()
-                + File.separator + generatedModel.getBuild().getFinalName();
-        File archetypeInRepository = new File( centralRepository.getBasedir(), 
baseName + ".jar" );
-        File archetypePomInRepository = new File( 
centralRepository.getBasedir(), baseName + ".pom" );
-        archetypeInRepository.getParentFile().mkdirs();
-        FileUtils.copyFile( archetypeArchive, archetypeInRepository );
-        FileUtils.copyFile( generatedArchetypePom, archetypePomInRepository );
-
-        // (4) create our own archetype catalog describing the archetype we 
just created
-        ArchetypeCatalog catalog = new ArchetypeCatalog();
-        Archetype generatedArchetype = new Archetype();
-        generatedArchetype.setGroupId( generatedArchetypeProject.getGroupId() 
);
-        generatedArchetype.setArtifactId( 
generatedArchetypeProject.getArtifactId() );
-        generatedArchetype.setVersion( generatedArchetypeProject.getVersion() 
);
-        generatedArchetype.setRepository( "http://localhost:"; + port + "/repo" 
);
-        catalog.addArchetype( generatedArchetype );
-
-        ArchetypeCatalogXpp3Writer catalogWriter = new 
ArchetypeCatalogXpp3Writer();
-        Writer writer = new FileWriter( catalogFile );
-        catalogWriter.write( writer, catalog );
-        IOUtils.closeQuietly( writer );
-
-        // (6) create a project form the archetype we just created
-        String outputDirectory = new File( getBasedir(),
-                                           "target" + File.separator + 
"test-classes" + File.separator + "projects"
-                                               + File.separator + 
"roundtrip-multi-recreated" ).getAbsolutePath();
-        FileUtils.forceDelete( outputDirectory );
-
-        ArchetypeGenerationRequest agr = new 
ArchetypeGenerationRequest().setArchetypeGroupId(
-            generatedArchetypeProject.getGroupId() ).setArchetypeArtifactId(
-            generatedArchetypeProject.getArtifactId() ).setArchetypeVersion(
-            generatedArchetypeProject.getVersion() ).setGroupId( 
"com.mycompany" ).setArtifactId( "myapp" ).setVersion(
-            "1.0-SNAPSHOT" ).setPackage( "com.mycompany.myapp" 
).setOutputDirectory(
-            outputDirectory ).setLocalRepository( localRepository 
).setArchetypeRepository(
-            "http://localhost:"; + port + "/repo/" );
-        ArchetypeGenerationResult generationResult = 
archetype.generateProjectFromArchetype( agr );
-
-        if ( generationResult.getCause() != null )
-        {
-            fail( generationResult.getCause().getMessage() );
-        }
-
-        String myapp = outputDirectory + File.separator + "myapp" + 
File.separator;
-        assertTrue( new File( myapp + "myapp-api", ".classpath" ).exists() );
-        assertTrue( new File( myapp + "myapp-cli", ".classpath" ).exists() );
-        assertTrue( new File( myapp + "myapp-core", ".classpath" ).exists() );
-        assertTrue( new File( myapp + "myapp-model", ".classpath" ).exists() );
-        assertTrue( new File( myapp + File.separator + "myapp-stores" + 
File.separator + "myapp-store-memory",
-                              ".classpath" ).exists() );
-        assertTrue(
-            new File( myapp + "myapp-stores" + File.separator + 
"myapp-store-xstream", ".classpath" ).exists() );
-
-        assertTrue( new File( myapp + "myapp-api", ".checkstyle" ).exists() );
-        assertTrue( new File( myapp + "myapp-cli", ".checkstyle" ).exists() );
-        assertTrue( new File( myapp + "myapp-core", ".checkstyle" ).exists() );
-        assertTrue( new File( myapp + "myapp-model", ".checkstyle" ).exists() 
);
-        assertTrue(
-            new File( myapp + "myapp-stores" + File.separator + 
"myapp-store-memory", ".checkstyle" ).exists() );
-        assertTrue(
-            new File( myapp + "myapp-stores" + File.separator + 
"myapp-store-xstream", ".checkstyle" ).exists() );
-
-    }
-
-    private Server server;
-
-    int port;
-
-    public void setUp()
-        throws Exception
-    {
-        super.setUp();
-        // Start Jetty
-
-        System.setProperty( "org.apache.maven.archetype.repository.directory",
-                            getTestPath( 
"target/test-classes/repositories/central" ) );
-
-        server = new Server( 0 );
-
-        WebAppContext webapp = new WebAppContext();
-        webapp.setContextPath( "/repo" );
-        webapp.setWar( "target/wars/archetype-repository.war" );
-        server.setHandler( webapp );
-
-        server.start();
-
-        port = server.getConnectors()[0].getLocalPort();
-
-
-    }
-
-    public void tearDown()
-        throws Exception
-    {
-        super.tearDown();
-        // Stop Jetty
-
-        server.stop();
-    }
-
-    private void assertArchetypeCreated( File workingProject )
-    {
-        File archetypeSourcesDirectory = FileUtils.resolveFile( 
workingProject, "target/generated-sources/archetype" );
-        File archetypeResourcesDirectory =
-            FileUtils.resolveFile( archetypeSourcesDirectory, 
"src/main/resources/archetype-resources" );
-        File archetypeMetadataDirectory =
-            FileUtils.resolveFile( archetypeSourcesDirectory, 
"src/main/resources/META-INF/maven" );
-
-        Iterator i = org.apache.commons.io.FileUtils.iterateFiles( 
archetypeSourcesDirectory, null, true );
-        while ( i.hasNext() )
-        {
-            File f = (File) i.next();
-            System.err.println( f.getPath() );
-        }
-
-        File api = FileUtils.resolveFile( archetypeResourcesDirectory, 
"__rootArtifactId__-api" );
-        assertExistDirectory( api );
-        assertExistFile( FileUtils.resolveFile( api, "pom.xml" ) );
-
-        File cli = FileUtils.resolveFile( archetypeResourcesDirectory, 
"__rootArtifactId__-cli" );
-        assertExistDirectory( cli );
-        assertExistFile( FileUtils.resolveFile( cli, "pom.xml" ) );
-
-        File core = FileUtils.resolveFile( archetypeResourcesDirectory, 
"__rootArtifactId__-core" );
-        assertExistDirectory( core );
-        assertExistFile( FileUtils.resolveFile( core, "pom.xml" ) );
-
-        File model = FileUtils.resolveFile( archetypeResourcesDirectory, 
"__rootArtifactId__-model" );
-        assertExistDirectory( model );
-        assertExistFile( FileUtils.resolveFile( model, "pom.xml" ) );
-
-        File stores = FileUtils.resolveFile( archetypeResourcesDirectory, 
"__rootArtifactId__-stores" );
-        assertExistDirectory( stores );
-        assertExistFile( FileUtils.resolveFile( stores, "pom.xml" ) );
-        assertExistDirectory( FileUtils.resolveFile( stores, 
"__rootArtifactId__-store-memory" ) );
-        assertExistFile(
-            FileUtils.resolveFile( FileUtils.resolveFile( stores, 
"__rootArtifactId__-store-memory" ), "pom.xml" ) );
-        assertExistDirectory( FileUtils.resolveFile( stores, 
"__rootArtifactId__-store-xstream" ) );
-        assertExistFile(
-            FileUtils.resolveFile( FileUtils.resolveFile( stores, 
"__rootArtifactId__-store-xstream" ), "pom.xml" ) );
-        assertExistFile( FileUtils.resolveFile( archetypeResourcesDirectory, 
"pom.xml" ) );
-
-        assertExistDirectory( archetypeMetadataDirectory );
-        assertExistFile( FileUtils.resolveFile( archetypeMetadataDirectory, 
"archetype-metadata.xml" ) );
-        assertExistFile( FileUtils.resolveFile( archetypeSourcesDirectory, 
"pom.xml" ) );
-
-    }
-
-    private void assertExistDirectory( File resolveFile )
-    {
-        assertTrue( "resolveFile " + resolveFile + " !exists", 
resolveFile.exists() );
-        assertTrue( "resolveFile " + resolveFile + " !isDirectory", 
resolveFile.isDirectory() );
-    }
-
-    private void assertExistFile( File resolveFile )
-    {
-        assertTrue( "resolveFile " + resolveFile + " !exists", 
resolveFile.exists() );
-        assertTrue( "resolveFile " + resolveFile + " !isFile", 
resolveFile.isFile() );
-    }
-}

Reply via email to