From ee8a38a0b9b83bdcc7d4b9753bd6bb213b6fa671 Mon Sep 17 00:00:00 2001 From: Israel Perales Date: Thu, 30 Jan 2020 20:13:10 -0600 Subject: [PATCH 1/3] * add feature no create base dir * WIP: test --- .../archetype/ArchetypeGenerationRequest.java | 14 +++++++++ .../DefaultFilesetArchetypeGenerator.java | 3 +- .../DefaultArchetypeGeneratorTest.java | 31 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) 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..8e2d62bc8 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 setCreteBaseDir( 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..8f1f2776d 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,37 @@ 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); + 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 + " should have been removed (by post-generate.groovy script", 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" ); + } public void testGenerateArchetypeWithPostScriptIncluded() throws Exception From 6d7fa89e419acc893ef7c8c49b0b3a25076de078 Mon Sep 17 00:00:00 2001 From: Israel Perales Date: Tue, 4 Feb 2020 12:55:33 -0600 Subject: [PATCH 2/3] * Add testing, no breaking changes --- .../DefaultArchetypeGeneratorTest.java | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) 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 8f1f2776d..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 @@ -440,25 +440,23 @@ public void testGenerateArchetypeWithSameDirectoryExcution() 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 + " should have been removed (by post-generate.groovy script", 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" ); + + 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" ); - 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( 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() From 5e88a020897ee2e2604ce96a167d5b5152063662 Mon Sep 17 00:00:00 2001 From: Israel Perales Date: Thu, 16 Apr 2020 21:42:50 -0500 Subject: [PATCH 3/3] * Fix typo --- .../org/apache/maven/archetype/ArchetypeGenerationRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8e2d62bc8..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 @@ -398,7 +398,7 @@ public boolean isCreateBaseDir() return createBaseDir; } - public ArchetypeGenerationRequest setCreteBaseDir( boolean createBaseDir ) + public ArchetypeGenerationRequest setCreateBaseDir( boolean createBaseDir ) { this.createBaseDir = createBaseDir;