diff --git a/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java b/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java index 2f3d1248b..8a127c77c 100644 --- a/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java +++ b/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java @@ -64,6 +64,8 @@ public class ArchetypeGenerationRequest private String archetypeVersion; private String archetypeGoals = ""; + + private boolean createBaseDir = true; /** * The URL to the archetype repository @@ -390,4 +392,16 @@ public ArchetypeGenerationRequest setFilter( String filter ) return this; } + + public boolean isCreateBaseDir() + { + return createBaseDir; + } + + public ArchetypeGenerationRequest setCreateBaseDir( boolean createBaseDir ) + { + this.createBaseDir = createBaseDir; + + return this; + } } 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 b3b4a7daa..a14498cc9 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 @@ -136,7 +136,8 @@ public void generateArchetype( ArchetypeGenerationRequest request, File archetyp String packageName = request.getPackage(); String artifactId = request.getArtifactId(); - File outputDirectoryFile = new File( request.getOutputDirectory(), artifactId ); + File outputDirectoryFile = new File( request.getOutputDirectory(), + request.isCreateBaseDir() ? artifactId : "" ); File basedirPom = new File( request.getOutputDirectory(), Constants.ARCHETYPE_POM ); File pom = new File( outputDirectoryFile, Constants.ARCHETYPE_POM ); 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 ef99de00c..011d9e1bf 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 @@ -429,6 +429,35 @@ public void testPropertiesNotDefined() result.getCause().getMessage().startsWith( "Archetype archetypes:basic:1.0 is not configured" ) && result.getCause().getMessage().endsWith( "Property property-without-default-4 is missing." ) ); } + + public void testGenerateArchetypeWithSameDirectoryExcution() + throws Exception + { + System.out.println( "testGenerateArchetypeWithSameDirectoryExcution" ); + ArchetypeGenerationRequest request = createArchetypeGenerationRequest( "generate-14", ARCHETYPE_BASIC ); + request.setCreteBaseDir( false ); + projectDirectory = new File( outputDirectory ); + FileUtils.forceDelete( projectDirectory ); + + generateProjectFromArchetype(request); + + assertTemplateContent( "src/main/java/file/value/package/App.java" ); + assertTemplateContent( "src/main/java/file/value/package/inner/package/App2.java" ); + assertTemplateContent( "src/main/c/file/value/package/App.c" ); + assertTemplateContent( "src/test/java/file/value/package/AppTest.java" ); + assertTemplateContent( "src/test/c/file/value/package/AppTest.c" ); + assertTemplateContent( "src/main/resources/App.properties" ); + assertTemplateContent( "src/main/resources/inner/dir/App2.properties" ); + assertTemplateContent( "src/main/mdo/App.mdo" ); + assertTemplateContent( "src/test/resources/AppTest.properties" ); + assertTemplateContent( "src/test/mdo/AppTest.mdo" ); + + Model model = readPom( new File( projectDirectory, "pom.xml" ) ); + assertNull( model.getParent() ); + assertEquals( "file-value", model.getGroupId() ); + assertEquals( "file-value", model.getArtifactId() ); + assertEquals( "file-value", model.getVersion() ); + } public void testGenerateArchetypeWithPostScriptIncluded() throws Exception