diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0d33e7f..be28d6e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- java: [ 17, 21 ]
+ java: [ 21 ]
steps:
- uses: actions/checkout@v4
diff --git a/src/main/resources/META-INF/archetype-post-generate.groovy b/src/main/resources/META-INF/archetype-post-generate.groovy
deleted file mode 100644
index 23f4bdb..0000000
--- a/src/main/resources/META-INF/archetype-post-generate.groovy
+++ /dev/null
@@ -1,21 +0,0 @@
-// Post-generation script to rename hidden files/directories
-import java.nio.file.Files
-import java.nio.file.Path
-import java.nio.file.Paths
-
-// Get the generated project directory
-Path projectPath = Paths.get(request.outputDirectory, request.artifactId)
-
-// Rename __gitignore__ to .gitignore
-Path gitignoreSrc = projectPath.resolve("__gitignore__")
-Path gitignoreDst = projectPath.resolve(".gitignore")
-if (Files.exists(gitignoreSrc)) {
- Files.move(gitignoreSrc, gitignoreDst)
-}
-
-// Rename __github__ to .github
-Path githubSrc = projectPath.resolve("__github__")
-Path githubDst = projectPath.resolve(".github")
-if (Files.exists(githubSrc)) {
- Files.move(githubSrc, githubDst)
-}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/maven/archetype-metadata.xml b/src/main/resources/META-INF/maven/archetype-metadata.xml
index 27336ca..53b0dd3 100644
--- a/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -21,6 +21,12 @@
17
+
+ .gitignore
+
+
+ .github
+
diff --git a/src/test/resources/projects/basic/archetype.properties b/src/test/resources/projects/basic/archetype.properties
index b591602..c7cda17 100644
--- a/src/test/resources/projects/basic/archetype.properties
+++ b/src/test/resources/projects/basic/archetype.properties
@@ -2,4 +2,6 @@ groupId=com.example.test
artifactId=test-project
version=1.0.0-SNAPSHOT
package=com.example.test
-javaVersion=17
\ No newline at end of file
+javaVersion=17
+gitignore=.gitignore
+github=.github
diff --git a/src/test/resources/projects/basic/goal.txt b/src/test/resources/projects/basic/goal.txt
index 0d5cfb8..1453d01 100644
--- a/src/test/resources/projects/basic/goal.txt
+++ b/src/test/resources/projects/basic/goal.txt
@@ -1 +1 @@
-clean test
\ No newline at end of file
+clean test
diff --git a/src/test/resources/projects/basic/verify.groovy b/src/test/resources/projects/basic/verify.groovy
index 69aa837..f67cf79 100644
--- a/src/test/resources/projects/basic/verify.groovy
+++ b/src/test/resources/projects/basic/verify.groovy
@@ -1,22 +1,45 @@
// Verify the generated project
def projectDir = new File(basedir, "project/test-project")
-// Check basic structure
-assert projectDir.exists() : "Project directory should exist: ${projectDir}"
-assert new File(projectDir, "pom.xml").exists() : "pom.xml should exist"
-assert new File(projectDir, "LICENSE").exists() : "LICENSE should exist"
-assert new File(projectDir, ".gitignore").exists() : ".gitignore should exist"
-
-// Check GitHub workflows
-assert new File(projectDir, ".github/workflows").exists() : ".github/workflows should exist"
-assert new File(projectDir, ".github/workflows/ci.yml").exists() : "CI workflow should exist"
-assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() : "Dependency check workflow should exist"
-assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() : "Gitflow release workflow should exist"
-assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() : "Gitflow hotfix workflow should exist"
-
-// Check source directories
-assert new File(projectDir, "src/main/java/com/example/test/App.java").exists() : "Main App.java should exist"
-assert new File(projectDir, "src/test/java/com/example/test/AppTest.java").exists() : "Test AppTest.java should exist"
-
-println "Integration test passed: All expected files were created!"
-return true
\ No newline at end of file
+try {
+ println "Starting verification for: ${basedir}"
+
+ // Check basic structure
+ println "Checking project directory exists: ${projectDir}"
+ assert projectDir.exists() : "Project directory should exist: ${projectDir}"
+
+ println "Checking pom.xml..."
+ assert new File(projectDir, "pom.xml").exists() : "pom.xml should exist"
+
+ println "Checking LICENSE..."
+ assert new File(projectDir, "LICENSE").exists() : "LICENSE should exist"
+
+ println "Checking .gitignore..."
+ assert new File(projectDir, ".gitignore").exists() : ".gitignore should exist"
+ println "PASS: Basic structure validated"
+
+ // Check GitHub workflows
+ println "Checking GitHub workflows..."
+ assert new File(projectDir, ".github/workflows").exists() : ".github/workflows should exist"
+ assert new File(projectDir, ".github/workflows/ci.yml").exists() : "CI workflow should exist"
+ assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() : "Dependency check workflow should exist"
+ assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() : "Gitflow release workflow should exist"
+ assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() : "Gitflow hotfix workflow should exist"
+ println "PASS: GitHub workflows validated"
+
+ // Check source directories
+ println "Checking source directories..."
+ assert new File(projectDir, "src/main/java/com/example/test/App.java").exists() : "Main App.java should exist"
+ assert new File(projectDir, "src/test/java/com/example/test/AppTest.java").exists() : "Test AppTest.java should exist"
+ println "PASS: Source directories validated"
+
+ println "VERIFICATION PASSED"
+ return true
+} catch (AssertionError e) {
+ println "ERROR: ASSERTION FAILED: ${e.message}"
+ throw e
+} catch (Exception e) {
+ println "ERROR: UNEXPECTED: ${e.message}"
+ e.printStackTrace()
+ throw e
+}
\ No newline at end of file
diff --git a/src/test/resources/projects/custom-package/archetype.properties b/src/test/resources/projects/custom-package/archetype.properties
index 8582d89..7157259 100644
--- a/src/test/resources/projects/custom-package/archetype.properties
+++ b/src/test/resources/projects/custom-package/archetype.properties
@@ -2,4 +2,6 @@ groupId=com.mycompany
artifactId=custom-pkg-app
version=1.5.0
package=org.custompackage.application
-javaVersion=17
\ No newline at end of file
+javaVersion=17
+gitignore=.gitignore
+github=.github
diff --git a/src/test/resources/projects/custom-package/goal.txt b/src/test/resources/projects/custom-package/goal.txt
index 0d5cfb8..1453d01 100644
--- a/src/test/resources/projects/custom-package/goal.txt
+++ b/src/test/resources/projects/custom-package/goal.txt
@@ -1 +1 @@
-clean test
\ No newline at end of file
+clean test
diff --git a/src/test/resources/projects/custom-package/verify.groovy b/src/test/resources/projects/custom-package/verify.groovy
index 067c7b9..2bfde13 100644
--- a/src/test/resources/projects/custom-package/verify.groovy
+++ b/src/test/resources/projects/custom-package/verify.groovy
@@ -1,48 +1,89 @@
// Verify custom package parameter works correctly
def projectDir = new File(basedir, "project/custom-pkg-app")
-assert projectDir.exists()
-
-// Check POM has correct groupId and artifactId
-def pomFile = new File(projectDir, "pom.xml")
-def pomContent = pomFile.text
-assert pomContent.contains("com.mycompany")
-assert pomContent.contains("custom-pkg-app")
-assert pomContent.contains("1.5.0")
-assert pomContent.contains("17")
-
-// Check that package structure uses custom package, NOT groupId
-assert new File(projectDir, "src/main/java/org/custompackage/application/App.java").exists()
-assert new File(projectDir, "src/test/java/org/custompackage/application/AppTest.java").exists()
-
-// Should NOT have the groupId package structure
-assert !new File(projectDir, "src/main/java/com/mycompany").exists()
-
-// Check package declaration in source files
-def appFile = new File(projectDir, "src/main/java/org/custompackage/application/App.java")
-def appContent = appFile.text
-assert appContent.contains("package org.custompackage.application;")
-assert !appContent.contains("package com.mycompany;")
-
-def testFile = new File(projectDir, "src/test/java/org/custompackage/application/AppTest.java")
-def testContent = testFile.text
-assert testContent.contains("package org.custompackage.application;")
-
-// Check test.properties
-def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
-def testPropsContent = testPropsFile.text
-assert testPropsContent.contains("app.test.java.version=17")
-assert testPropsContent.contains("app.test.version=1.5.0")
-assert testPropsContent.contains("app.test.name=custom-pkg-app-test")
-
-// Check GitHub workflows exist
-assert new File(projectDir, ".github/workflows/ci.yml").exists()
-assert new File(projectDir, ".github/workflows/dependency-check.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists()
-
-// Check .gitignore exists
-assert new File(projectDir, ".gitignore").exists()
-
-println "Custom package test passed - package parameter correctly overrides groupId!"
-return true
\ No newline at end of file
+try {
+ println "Starting verification for: ${basedir}"
+
+ println "Checking project directory exists: ${projectDir}"
+ assert projectDir.exists() : "Project directory does not exist: ${projectDir}"
+
+ // Check POM has correct groupId and artifactId
+ def pomFile = new File(projectDir, "pom.xml")
+ println "Checking POM file: ${pomFile}"
+ assert pomFile.exists() : "POM file does not exist: ${pomFile}"
+
+ def pomContent = pomFile.text
+ assert pomContent.contains("com.mycompany") : "POM missing correct groupId"
+ assert pomContent.contains("custom-pkg-app") : "POM missing correct artifactId"
+ assert pomContent.contains("1.5.0") : "POM missing correct version"
+ assert pomContent.contains("17") : "POM missing Java 17 compiler release"
+ println "PASS: POM file validated"
+
+ // Check that package structure uses custom package, NOT groupId
+ println "Checking custom package structure..."
+ def appJavaFile = new File(projectDir, "src/main/java/org/custompackage/application/App.java")
+ assert appJavaFile.exists() : "App.java does not exist at: ${appJavaFile}"
+
+ def testJavaFile = new File(projectDir, "src/test/java/org/custompackage/application/AppTest.java")
+ assert testJavaFile.exists() : "AppTest.java does not exist at: ${testJavaFile}"
+
+ // Should NOT have the groupId package structure
+ def wrongPackageDir = new File(projectDir, "src/main/java/com/mycompany")
+ assert !wrongPackageDir.exists() : "Wrong package structure exists (should use custom package, not groupId): ${wrongPackageDir}"
+ println "PASS: Custom package structure validated"
+
+ // Check package declaration in source files
+ println "Checking package declarations..."
+ def appContent = appJavaFile.text
+ assert appContent.contains("package org.custompackage.application;") :
+ "App.java has incorrect package declaration"
+ assert !appContent.contains("package com.mycompany;") :
+ "App.java contains wrong package declaration (com.mycompany)"
+
+ def testContent = testJavaFile.text
+ assert testContent.contains("package org.custompackage.application;") :
+ "AppTest.java has incorrect package declaration"
+ println "PASS: Package declarations validated"
+
+ // Check test.properties
+ def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
+ println "Checking test properties: ${testPropsFile}"
+ assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}"
+
+ def testPropsContent = testPropsFile.text
+ assert testPropsContent.contains("app.test.java.version=17") :
+ "test.properties missing java.version=17"
+ assert testPropsContent.contains("app.test.version=1.5.0") :
+ "test.properties missing version=1.5.0"
+ assert testPropsContent.contains("app.test.name=custom-pkg-app-test") :
+ "test.properties missing name=custom-pkg-app-test"
+ println "PASS: Test properties validated"
+
+ // Check GitHub workflows exist
+ println "Checking GitHub workflows..."
+ assert new File(projectDir, ".github/workflows/ci.yml").exists() :
+ "ci.yml does not exist"
+ assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() :
+ "dependency-check.yml does not exist"
+ assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() :
+ "gitflow-release.yml does not exist"
+ assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() :
+ "gitflow-hotfix.yml does not exist"
+ println "PASS: GitHub workflows exist"
+
+ // Check .gitignore exists
+ def gitignoreFile = new File(projectDir, ".gitignore")
+ println "Checking .gitignore: ${gitignoreFile}"
+ assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}"
+ println "PASS: .gitignore exists"
+
+ println "VERIFICATION PASSED"
+ return true
+} catch (AssertionError e) {
+ println "ERROR: ASSERTION FAILED: ${e.message}"
+ throw e
+} catch (Exception e) {
+ println "ERROR: UNEXPECTED: ${e.message}"
+ e.printStackTrace()
+ throw e
+}
\ No newline at end of file
diff --git a/src/test/resources/projects/default-package/archetype.properties b/src/test/resources/projects/default-package/archetype.properties
index c0770a8..98190ae 100644
--- a/src/test/resources/projects/default-package/archetype.properties
+++ b/src/test/resources/projects/default-package/archetype.properties
@@ -2,4 +2,6 @@ groupId=org.mycompany
artifactId=default-pkg-app
version=2.0.0
package=org.mycompany
-javaVersion=17
\ No newline at end of file
+javaVersion=17
+gitignore=.gitignore
+github=.github
diff --git a/src/test/resources/projects/default-package/goal.txt b/src/test/resources/projects/default-package/goal.txt
index 0d5cfb8..1453d01 100644
--- a/src/test/resources/projects/default-package/goal.txt
+++ b/src/test/resources/projects/default-package/goal.txt
@@ -1 +1 @@
-clean test
\ No newline at end of file
+clean test
diff --git a/src/test/resources/projects/default-package/verify.groovy b/src/test/resources/projects/default-package/verify.groovy
index 48985ca..ae15fe5 100644
--- a/src/test/resources/projects/default-package/verify.groovy
+++ b/src/test/resources/projects/default-package/verify.groovy
@@ -1,42 +1,80 @@
// Verify default package behavior (should use groupId)
def projectDir = new File(basedir, "project/default-pkg-app")
-assert projectDir.exists()
-
-// Check POM
-def pomFile = new File(projectDir, "pom.xml")
-def pomContent = pomFile.text
-assert pomContent.contains("org.mycompany")
-assert pomContent.contains("default-pkg-app")
-assert pomContent.contains("2.0.0")
-
-// Check that package structure uses groupId
-assert new File(projectDir, "src/main/java/org/mycompany/App.java").exists()
-assert new File(projectDir, "src/test/java/org/mycompany/AppTest.java").exists()
-
-// Check package declaration
-def appFile = new File(projectDir, "src/main/java/org/mycompany/App.java")
-def appContent = appFile.text
-assert appContent.contains("package org.mycompany;")
-
-def testFile = new File(projectDir, "src/test/java/org/mycompany/AppTest.java")
-def testContent = testFile.text
-assert testContent.contains("package org.mycompany;")
-
-// Check test.properties
-def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
-def testPropsContent = testPropsFile.text
-assert testPropsContent.contains("app.test.version=2.0.0")
-assert testPropsContent.contains("app.test.name=default-pkg-app-test")
-
-// Check GitHub workflows exist
-assert new File(projectDir, ".github/workflows/ci.yml").exists()
-assert new File(projectDir, ".github/workflows/dependency-check.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists()
-
-// Check .gitignore exists
-assert new File(projectDir, ".gitignore").exists()
-
-println "Default package archetype generation test passed!"
-return true
\ No newline at end of file
+try {
+ println "Starting verification for: ${basedir}"
+
+ println "Checking project directory exists: ${projectDir}"
+ assert projectDir.exists() : "Project directory does not exist: ${projectDir}"
+
+ // Check POM
+ def pomFile = new File(projectDir, "pom.xml")
+ println "Checking POM file: ${pomFile}"
+ assert pomFile.exists() : "POM file does not exist: ${pomFile}"
+
+ def pomContent = pomFile.text
+ assert pomContent.contains("org.mycompany") : "POM missing correct groupId"
+ assert pomContent.contains("default-pkg-app") : "POM missing correct artifactId"
+ assert pomContent.contains("2.0.0") : "POM missing correct version"
+ println "PASS: POM file validated"
+
+ // Check that package structure uses groupId
+ println "Checking package structure uses groupId..."
+ def appJavaFile = new File(projectDir, "src/main/java/org/mycompany/App.java")
+ assert appJavaFile.exists() : "App.java does not exist at: ${appJavaFile}"
+
+ def testJavaFile = new File(projectDir, "src/test/java/org/mycompany/AppTest.java")
+ assert testJavaFile.exists() : "AppTest.java does not exist at: ${testJavaFile}"
+ println "PASS: Package structure validated (using groupId as default)"
+
+ // Check package declaration
+ println "Checking package declarations..."
+ def appContent = appJavaFile.text
+ assert appContent.contains("package org.mycompany;") :
+ "App.java has incorrect package declaration"
+
+ def testContent = testJavaFile.text
+ assert testContent.contains("package org.mycompany;") :
+ "AppTest.java has incorrect package declaration"
+ println "PASS: Package declarations validated"
+
+ // Check test.properties
+ def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
+ println "Checking test properties: ${testPropsFile}"
+ assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}"
+
+ def testPropsContent = testPropsFile.text
+ assert testPropsContent.contains("app.test.version=2.0.0") :
+ "test.properties missing version=2.0.0"
+ assert testPropsContent.contains("app.test.name=default-pkg-app-test") :
+ "test.properties missing name=default-pkg-app-test"
+ println "PASS: Test properties validated"
+
+ // Check GitHub workflows exist
+ println "Checking GitHub workflows..."
+ assert new File(projectDir, ".github/workflows/ci.yml").exists() :
+ "ci.yml does not exist"
+ assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() :
+ "dependency-check.yml does not exist"
+ assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() :
+ "gitflow-release.yml does not exist"
+ assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() :
+ "gitflow-hotfix.yml does not exist"
+ println "PASS: GitHub workflows exist"
+
+ // Check .gitignore exists
+ def gitignoreFile = new File(projectDir, ".gitignore")
+ println "Checking .gitignore: ${gitignoreFile}"
+ assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}"
+ println "PASS: .gitignore exists"
+
+ println "VERIFICATION PASSED"
+ return true
+} catch (AssertionError e) {
+ println "ERROR: ASSERTION FAILED: ${e.message}"
+ throw e
+} catch (Exception e) {
+ println "ERROR: UNEXPECTED: ${e.message}"
+ e.printStackTrace()
+ throw e
+}
\ No newline at end of file
diff --git a/src/test/resources/projects/java11/archetype.properties b/src/test/resources/projects/java11/archetype.properties
index 344a8f4..f9183de 100644
--- a/src/test/resources/projects/java11/archetype.properties
+++ b/src/test/resources/projects/java11/archetype.properties
@@ -2,4 +2,6 @@ groupId=org.testjava11
artifactId=java11-app
version=2.3.1
package=org.testjava11
-javaVersion=11
\ No newline at end of file
+javaVersion=11
+gitignore=.gitignore
+github=.github
diff --git a/src/test/resources/projects/java11/goal.txt b/src/test/resources/projects/java11/goal.txt
index 0d5cfb8..1453d01 100644
--- a/src/test/resources/projects/java11/goal.txt
+++ b/src/test/resources/projects/java11/goal.txt
@@ -1 +1 @@
-clean test
\ No newline at end of file
+clean test
diff --git a/src/test/resources/projects/java11/verify.groovy b/src/test/resources/projects/java11/verify.groovy
index 206844c..cb9a5da 100644
--- a/src/test/resources/projects/java11/verify.groovy
+++ b/src/test/resources/projects/java11/verify.groovy
@@ -1,39 +1,78 @@
// Verify Java 11 configuration
def projectDir = new File(basedir, "project/java11-app")
-assert projectDir.exists()
-
-// Check POM has Java 11
-def pomFile = new File(projectDir, "pom.xml")
-def pomContent = pomFile.text
-assert pomContent.contains("11")
-assert pomContent.contains("org.testjava11")
-assert pomContent.contains("java11-app")
-assert pomContent.contains("2.3.1")
-
-// Check package uses groupId as default (no package param specified)
-assert new File(projectDir, "src/main/java/org/testjava11/App.java").exists()
-
-// Check test.properties has Java 11 and correct version
-def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
-def testPropsContent = testPropsFile.text
-assert testPropsContent.contains("app.test.java.version=11")
-assert testPropsContent.contains("app.test.version=2.3.1")
-assert testPropsContent.contains("app.test.name=java11-app-test")
-
-// Check GitHub workflows exist
-assert new File(projectDir, ".github/workflows/ci.yml").exists()
-assert new File(projectDir, ".github/workflows/dependency-check.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists()
-
-// Check .gitignore exists
-assert new File(projectDir, ".gitignore").exists()
-
-// Check CI workflow has Java 11 in matrix
-def ciWorkflow = new File(projectDir, ".github/workflows/ci.yml")
-def ciContent = ciWorkflow.text
-assert ciContent.contains("java: [ 11")
-
-println "Java 11 test passed!"
-return true
\ No newline at end of file
+try {
+ println "Starting verification for: ${basedir}"
+
+ println "Checking project directory exists: ${projectDir}"
+ assert projectDir.exists() : "Project directory does not exist: ${projectDir}"
+
+ // Check POM has Java 11
+ def pomFile = new File(projectDir, "pom.xml")
+ println "Checking POM file: ${pomFile}"
+ assert pomFile.exists() : "POM file does not exist: ${pomFile}"
+
+ def pomContent = pomFile.text
+ assert pomContent.contains("11") :
+ "POM missing Java 11 compiler release"
+ assert pomContent.contains("org.testjava11") : "POM missing correct groupId"
+ assert pomContent.contains("java11-app") : "POM missing correct artifactId"
+ assert pomContent.contains("2.3.1") : "POM missing correct version"
+ println "PASS: POM file validated"
+
+ // Check package uses groupId as default (no package param specified)
+ println "Checking package structure..."
+ def appJavaFile = new File(projectDir, "src/main/java/org/testjava11/App.java")
+ assert appJavaFile.exists() : "App.java does not exist at: ${appJavaFile}"
+ println "PASS: Package structure validated"
+
+ // Check test.properties has Java 11 and correct version
+ def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
+ println "Checking test properties: ${testPropsFile}"
+ assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}"
+
+ def testPropsContent = testPropsFile.text
+ assert testPropsContent.contains("app.test.java.version=11") :
+ "test.properties missing java.version=11"
+ assert testPropsContent.contains("app.test.version=2.3.1") :
+ "test.properties missing version=2.3.1"
+ assert testPropsContent.contains("app.test.name=java11-app-test") :
+ "test.properties missing name=java11-app-test"
+ println "PASS: Test properties validated"
+
+ // Check GitHub workflows exist
+ println "Checking GitHub workflows..."
+ assert new File(projectDir, ".github/workflows/ci.yml").exists() :
+ "ci.yml does not exist"
+ assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() :
+ "dependency-check.yml does not exist"
+ assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() :
+ "gitflow-release.yml does not exist"
+ assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() :
+ "gitflow-hotfix.yml does not exist"
+ println "PASS: GitHub workflows exist"
+
+ // Check .gitignore exists
+ def gitignoreFile = new File(projectDir, ".gitignore")
+ println "Checking .gitignore: ${gitignoreFile}"
+ assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}"
+ println "PASS: .gitignore exists"
+
+ // Check CI workflow has Java 11 in matrix
+ println "Checking CI workflow content..."
+ def ciWorkflow = new File(projectDir, ".github/workflows/ci.yml")
+ def ciContent = ciWorkflow.text
+ assert ciContent.contains("java: [ 11") || ciContent.contains("java: [11") :
+ "CI workflow does not contain Java 11 in matrix"
+ println "PASS: CI workflow contains Java 11"
+
+ println "VERIFICATION PASSED"
+ return true
+} catch (AssertionError e) {
+ println "ERROR: ASSERTION FAILED: ${e.message}"
+ throw e
+} catch (Exception e) {
+ println "ERROR: UNEXPECTED: ${e.message}"
+ e.printStackTrace()
+ throw e
+}
\ No newline at end of file
diff --git a/src/test/resources/projects/java21/archetype.properties b/src/test/resources/projects/java21/archetype.properties
index 91f542a..b2f776a 100644
--- a/src/test/resources/projects/java21/archetype.properties
+++ b/src/test/resources/projects/java21/archetype.properties
@@ -2,4 +2,6 @@ groupId=com.example.java21
artifactId=test-java21
version=1.0.0
package=com.example.java21
-javaVersion=21
\ No newline at end of file
+javaVersion=21
+gitignore=.gitignore
+github=.github
diff --git a/src/test/resources/projects/java21/goal.txt b/src/test/resources/projects/java21/goal.txt
index 0d5cfb8..1453d01 100644
--- a/src/test/resources/projects/java21/goal.txt
+++ b/src/test/resources/projects/java21/goal.txt
@@ -1 +1 @@
-clean test
\ No newline at end of file
+clean test
diff --git a/src/test/resources/projects/java21/verify.groovy b/src/test/resources/projects/java21/verify.groovy
index e91d3ff..406d48b 100644
--- a/src/test/resources/projects/java21/verify.groovy
+++ b/src/test/resources/projects/java21/verify.groovy
@@ -1,40 +1,94 @@
// Verify Java 21 configuration
def projectDir = new File(basedir, "project/test-java21")
-assert projectDir.exists()
-
-// Check POM has Java 21
-def pomFile = new File(projectDir, "pom.xml")
-def pomContent = pomFile.text
-assert pomContent.contains("21")
-assert pomContent.contains("com.example.java21")
-assert pomContent.contains("test-java21")
-assert pomContent.contains("1.0.0")
-
-// Check package uses groupId as default
-assert new File(projectDir, "src/main/java/com/example/java21/App.java").exists()
-
-// Check test.properties has Java 21
-def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
-def testPropsContent = testPropsFile.text
-assert testPropsContent.contains("app.test.java.version=21")
-assert testPropsContent.contains("app.test.version=1.0.0")
-assert testPropsContent.contains("app.test.name=test-java21-test")
-
-// Check GitHub workflows exist
-assert new File(projectDir, ".github/workflows/ci.yml").exists()
-assert new File(projectDir, ".github/workflows/dependency-check.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists()
-
-// Check .gitignore exists
-assert new File(projectDir, ".gitignore").exists()
-
-// Check CI workflow has Java 21 in matrix
-def ciWorkflow = new File(projectDir, ".github/workflows/ci.yml")
-def ciContent = ciWorkflow.text
-assert ciContent.contains("java: [ 21")
-assert ciContent.contains("java-version: '21'") // In gitflow workflows
-
-println "Java 21 archetype generation test passed!"
-return true
\ No newline at end of file
+try {
+ println "Checking project directory exists: ${projectDir}"
+ assert projectDir.exists() : "Project directory does not exist: ${projectDir}"
+
+ // Check POM has Java 21
+ def pomFile = new File(projectDir, "pom.xml")
+ println "Checking POM file: ${pomFile}"
+ assert pomFile.exists() : "POM file does not exist: ${pomFile}"
+
+ def pomContent = pomFile.text
+ assert pomContent.contains("21") : "POM missing Java 21 compiler release"
+ assert pomContent.contains("com.example.java21") : "POM missing correct groupId"
+ assert pomContent.contains("test-java21") : "POM missing correct artifactId"
+ assert pomContent.contains("1.0.0") : "POM missing correct version"
+ println "PASS: POM file validated"
+
+ // Check package uses groupId as default
+ def javaFile = new File(projectDir, "src/main/java/com/example/java21/App.java")
+ println "Checking Java file: ${javaFile}"
+ assert javaFile.exists() : "App.java does not exist at: ${javaFile}"
+ println "PASS: Java package structure validated"
+
+ // Check test.properties has Java 21
+ def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
+ println "Checking test properties: ${testPropsFile}"
+ assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}"
+
+ def testPropsContent = testPropsFile.text
+ assert testPropsContent.contains("app.test.java.version=21") : "test.properties missing java.version=21"
+ assert testPropsContent.contains("app.test.version=1.0.0") : "test.properties missing version=1.0.0"
+ assert testPropsContent.contains("app.test.name=test-java21-test") : "test.properties missing name=test-java21-test"
+ println "PASS: Test properties validated"
+
+ // Check GitHub workflows exist
+ println "Checking GitHub workflows..."
+ def githubDir = new File(projectDir, ".github")
+ assert githubDir.exists() : ".github directory does not exist: ${githubDir}"
+
+ def workflowsDir = new File(projectDir, ".github/workflows")
+ assert workflowsDir.exists() : "workflows directory does not exist: ${workflowsDir}"
+
+ def ciYml = new File(projectDir, ".github/workflows/ci.yml")
+ assert ciYml.exists() : "ci.yml does not exist: ${ciYml}"
+
+ def depCheckYml = new File(projectDir, ".github/workflows/dependency-check.yml")
+ assert depCheckYml.exists() : "dependency-check.yml does not exist: ${depCheckYml}"
+
+ def gitflowReleaseYml = new File(projectDir, ".github/workflows/gitflow-release.yml")
+ assert gitflowReleaseYml.exists() : "gitflow-release.yml does not exist: ${gitflowReleaseYml}"
+
+ def gitflowHotfixYml = new File(projectDir, ".github/workflows/gitflow-hotfix.yml")
+ assert gitflowHotfixYml.exists() : "gitflow-hotfix.yml does not exist: ${gitflowHotfixYml}"
+ println "PASS: GitHub workflows exist"
+
+ // Check .gitignore exists
+ def gitignoreFile = new File(projectDir, ".gitignore")
+ println "Checking .gitignore: ${gitignoreFile}"
+ assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}"
+ println "PASS: .gitignore exists"
+
+ // Check CI workflow has Java 21 in matrix
+ println "Checking CI workflow content..."
+ def ciContent = ciYml.text
+ assert ciContent.contains("java: [ 21") || ciContent.contains("java: [21") :
+ "CI workflow does not contain Java 21 in matrix"
+ println "PASS: CI workflow contains Java 21"
+
+ // Check gitflow workflows have Java 21
+ println "Checking gitflow-release workflow content..."
+ def gitflowReleaseContent = gitflowReleaseYml.text
+ assert gitflowReleaseContent.contains("java-version: '21'") :
+ "gitflow-release.yml does not contain java-version: '21'"
+ println "PASS: gitflow-release contains Java 21"
+
+ println "Checking gitflow-hotfix workflow content..."
+ def gitflowHotfixContent = gitflowHotfixYml.text
+ assert gitflowHotfixContent.contains("java-version: '21'") :
+ "gitflow-hotfix.yml does not contain java-version: '21'"
+ println "PASS: gitflow-hotfix contains Java 21"
+
+ println "SUCCESS: Java 21 archetype generation test PASSED!"
+ return true
+
+} catch (AssertionError e) {
+ println "ERROR: ASSERTION FAILED: ${e.message}"
+ throw e
+} catch (Exception e) {
+ println "ERROR: UNEXPECTED ERROR: ${e.message}"
+ e.printStackTrace()
+ throw e
+}
\ No newline at end of file
diff --git a/src/test/resources/projects/snapshot-version/archetype.properties b/src/test/resources/projects/snapshot-version/archetype.properties
index 7f5ade9..cbf8398 100644
--- a/src/test/resources/projects/snapshot-version/archetype.properties
+++ b/src/test/resources/projects/snapshot-version/archetype.properties
@@ -2,4 +2,6 @@ groupId=com.snapshot.test
artifactId=snapshot-app
version=3.0.0-SNAPSHOT
package=com.snapshot.test.app
-javaVersion=21
\ No newline at end of file
+javaVersion=21
+gitignore=.gitignore
+github=.github
diff --git a/src/test/resources/projects/snapshot-version/goal.txt b/src/test/resources/projects/snapshot-version/goal.txt
index 0d5cfb8..1453d01 100644
--- a/src/test/resources/projects/snapshot-version/goal.txt
+++ b/src/test/resources/projects/snapshot-version/goal.txt
@@ -1 +1 @@
-clean test
\ No newline at end of file
+clean test
diff --git a/src/test/resources/projects/snapshot-version/verify.groovy b/src/test/resources/projects/snapshot-version/verify.groovy
index c56e60b..ed5ed17 100644
--- a/src/test/resources/projects/snapshot-version/verify.groovy
+++ b/src/test/resources/projects/snapshot-version/verify.groovy
@@ -1,49 +1,110 @@
// Verify SNAPSHOT version and custom package
def projectDir = new File(basedir, "project/snapshot-app")
-assert projectDir.exists()
-
-// Check POM content
-def pomFile = new File(projectDir, "pom.xml")
-def pomContent = pomFile.text
-assert pomContent.contains("com.snapshot.test")
-assert pomContent.contains("snapshot-app")
-assert pomContent.contains("3.0.0-SNAPSHOT")
-assert pomContent.contains("21")
-
-// Check package structure uses custom package parameter
-assert new File(projectDir, "src/main/java/com/snapshot/test/app/App.java").exists()
-assert new File(projectDir, "src/test/java/com/snapshot/test/app/AppTest.java").exists()
-
-// Check package declarations
-def appFile = new File(projectDir, "src/main/java/com/snapshot/test/app/App.java")
-def appContent = appFile.text
-assert appContent.contains("package com.snapshot.test.app;")
-
-def testFile = new File(projectDir, "src/test/java/com/snapshot/test/app/AppTest.java")
-def testContent = testFile.text
-assert testContent.contains("package com.snapshot.test.app;")
-
-// Check test.properties
-def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
-def testPropsContent = testPropsFile.text
-assert testPropsContent.contains("app.test.version=3.0.0-SNAPSHOT")
-assert testPropsContent.contains("app.test.java.version=21")
-assert testPropsContent.contains("app.test.name=snapshot-app-test")
-
-// Verify no placeholders remain
-assert !testPropsContent.contains("\${")
-assert !pomContent.contains("\${artifactId}")
-assert !pomContent.contains("\${version}")
-
-// Check GitHub workflows exist
-assert new File(projectDir, ".github/workflows/ci.yml").exists()
-assert new File(projectDir, ".github/workflows/dependency-check.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists()
-
-// Check .gitignore exists
-assert new File(projectDir, ".gitignore").exists()
-
-println "SNAPSHOT version test with custom package passed!"
-return true
\ No newline at end of file
+try {
+ println "Checking project directory exists: ${projectDir}"
+ assert projectDir.exists() : "Project directory does not exist: ${projectDir}"
+
+ // Check POM content
+ def pomFile = new File(projectDir, "pom.xml")
+ println "Checking POM file: ${pomFile}"
+ assert pomFile.exists() : "POM file does not exist: ${pomFile}"
+
+ def pomContent = pomFile.text
+ assert pomContent.contains("com.snapshot.test") : "POM missing correct groupId"
+ assert pomContent.contains("snapshot-app") : "POM missing correct artifactId"
+ assert pomContent.contains("3.0.0-SNAPSHOT") : "POM missing correct SNAPSHOT version"
+ assert pomContent.contains("21") : "POM missing Java 21 compiler release"
+ println "PASS: POM file validated"
+
+ // Check package structure uses custom package parameter
+ def appJavaFile = new File(projectDir, "src/main/java/com/snapshot/test/app/App.java")
+ println "Checking App.java: ${appJavaFile}"
+ assert appJavaFile.exists() : "App.java does not exist at: ${appJavaFile}"
+
+ def testJavaFile = new File(projectDir, "src/test/java/com/snapshot/test/app/AppTest.java")
+ println "Checking AppTest.java: ${testJavaFile}"
+ assert testJavaFile.exists() : "AppTest.java does not exist at: ${testJavaFile}"
+ println "PASS: Package structure validated"
+
+ // Check package declarations
+ println "Checking package declarations..."
+ def appContent = appJavaFile.text
+ assert appContent.contains("package com.snapshot.test.app;") :
+ "App.java has incorrect package declaration"
+
+ def testContent = testJavaFile.text
+ assert testContent.contains("package com.snapshot.test.app;") :
+ "AppTest.java has incorrect package declaration"
+ println "PASS: Package declarations validated"
+
+ // Check test.properties
+ def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
+ println "Checking test properties: ${testPropsFile}"
+ assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}"
+
+ def testPropsContent = testPropsFile.text
+ assert testPropsContent.contains("app.test.version=3.0.0-SNAPSHOT") :
+ "test.properties missing version=3.0.0-SNAPSHOT"
+ assert testPropsContent.contains("app.test.java.version=21") :
+ "test.properties missing java.version=21"
+ assert testPropsContent.contains("app.test.name=snapshot-app-test") :
+ "test.properties missing name=snapshot-app-test"
+ println "PASS: Test properties validated"
+
+ // Verify no placeholders remain
+ println "Checking for unresolved placeholders..."
+ assert !testPropsContent.contains("\${") :
+ "test.properties contains unresolved placeholders: ${testPropsContent.findAll(/\$\{[^}]+\}/)}"
+ assert !pomContent.contains("\${artifactId}") :
+ "POM contains unresolved \${artifactId}"
+ assert !pomContent.contains("\${version}") :
+ "POM contains unresolved \${version}"
+ println "PASS: No unresolved placeholders"
+
+ // Check GitHub workflows exist
+ println "Checking GitHub workflows..."
+ def githubDir = new File(projectDir, ".github")
+ assert githubDir.exists() : ".github directory does not exist: ${githubDir}"
+
+ def workflowsDir = new File(projectDir, ".github/workflows")
+ assert workflowsDir.exists() : "workflows directory does not exist: ${workflowsDir}"
+
+ assert new File(projectDir, ".github/workflows/ci.yml").exists() :
+ "ci.yml does not exist"
+ assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() :
+ "dependency-check.yml does not exist"
+ assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() :
+ "gitflow-release.yml does not exist"
+ assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() :
+ "gitflow-hotfix.yml does not exist"
+ println "PASS: GitHub workflows exist"
+
+ // Check .gitignore exists
+ def gitignoreFile = new File(projectDir, ".gitignore")
+ println "Checking .gitignore: ${gitignoreFile}"
+ assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}"
+ println "PASS: .gitignore exists"
+
+ // Check gitflow workflows have Java 21
+ println "Checking gitflow workflows for Java 21..."
+ def gitflowReleaseContent = new File(projectDir, ".github/workflows/gitflow-release.yml").text
+ assert gitflowReleaseContent.contains("java-version: '21'") :
+ "gitflow-release.yml does not contain java-version: '21'"
+
+ def gitflowHotfixContent = new File(projectDir, ".github/workflows/gitflow-hotfix.yml").text
+ assert gitflowHotfixContent.contains("java-version: '21'") :
+ "gitflow-hotfix.yml does not contain java-version: '21'"
+ println "PASS: Gitflow workflows contain Java 21"
+
+ println "SUCCESS: SNAPSHOT version test with custom package PASSED!"
+ return true
+
+} catch (AssertionError e) {
+ println "ERROR: ASSERTION FAILED: ${e.message}"
+ throw e
+} catch (Exception e) {
+ println "ERROR: UNEXPECTED ERROR: ${e.message}"
+ e.printStackTrace()
+ throw e
+}
\ No newline at end of file
diff --git a/src/test/resources/projects/special-chars/archetype.properties b/src/test/resources/projects/special-chars/archetype.properties
index 5c3d0e1..97805aa 100644
--- a/src/test/resources/projects/special-chars/archetype.properties
+++ b/src/test/resources/projects/special-chars/archetype.properties
@@ -2,4 +2,6 @@ groupId=io.example.test
artifactId=my-special-app
version=1.0.0-RC1
package=io.example.test
-javaVersion=17
\ No newline at end of file
+javaVersion=17
+gitignore=.gitignore
+github=.github
diff --git a/src/test/resources/projects/special-chars/goal.txt b/src/test/resources/projects/special-chars/goal.txt
index 0d5cfb8..1453d01 100644
--- a/src/test/resources/projects/special-chars/goal.txt
+++ b/src/test/resources/projects/special-chars/goal.txt
@@ -1 +1 @@
-clean test
\ No newline at end of file
+clean test
diff --git a/src/test/resources/projects/special-chars/verify.groovy b/src/test/resources/projects/special-chars/verify.groovy
index 9cac4f6..48ff94e 100644
--- a/src/test/resources/projects/special-chars/verify.groovy
+++ b/src/test/resources/projects/special-chars/verify.groovy
@@ -1,44 +1,83 @@
// Verify handling of special characters in artifactId and version
def projectDir = new File(basedir, "project/my-special-app")
-assert projectDir.exists()
-
-// Check POM content
-def pomFile = new File(projectDir, "pom.xml")
-def pomContent = pomFile.text
-assert pomContent.contains("io.example.test")
-assert pomContent.contains("my-special-app")
-assert pomContent.contains("1.0.0-RC1")
-assert pomContent.contains("17")
-
-// Check package structure (should use groupId since no package param)
-assert new File(projectDir, "src/main/java/io/example/test/App.java").exists()
-assert new File(projectDir, "src/test/java/io/example/test/AppTest.java").exists()
-
-// Check package declarations
-def appFile = new File(projectDir, "src/main/java/io/example/test/App.java")
-def appContent = appFile.text
-assert appContent.contains("package io.example.test;")
-
-def testFile = new File(projectDir, "src/test/java/io/example/test/AppTest.java")
-def testContent = testFile.text
-assert testContent.contains("package io.example.test;")
-
-// Check test.properties handles special chars correctly
-def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
-def testPropsContent = testPropsFile.text
-assert testPropsContent.contains("app.test.name=my-special-app-test")
-assert testPropsContent.contains("app.test.version=1.0.0-RC1")
-assert testPropsContent.contains("app.test.java.version=17")
-
-// Check GitHub workflows exist
-assert new File(projectDir, ".github/workflows/ci.yml").exists()
-assert new File(projectDir, ".github/workflows/dependency-check.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists()
-assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists()
-
-// Check .gitignore exists
-assert new File(projectDir, ".gitignore").exists()
-
-println "Special characters test passed!"
-return true
\ No newline at end of file
+try {
+ println "Starting verification for: ${basedir}"
+
+ println "Checking project directory exists: ${projectDir}"
+ assert projectDir.exists() : "Project directory does not exist: ${projectDir}"
+
+ // Check POM content
+ def pomFile = new File(projectDir, "pom.xml")
+ println "Checking POM file: ${pomFile}"
+ assert pomFile.exists() : "POM file does not exist: ${pomFile}"
+
+ def pomContent = pomFile.text
+ assert pomContent.contains("io.example.test") : "POM missing correct groupId"
+ assert pomContent.contains("my-special-app") : "POM missing correct artifactId"
+ assert pomContent.contains("1.0.0-RC1") : "POM missing correct version"
+ assert pomContent.contains("17") : "POM missing Java 17 compiler release"
+ println "PASS: POM file validated"
+
+ // Check package structure (should use groupId since no package param)
+ println "Checking package structure..."
+ def appJavaFile = new File(projectDir, "src/main/java/io/example/test/App.java")
+ assert appJavaFile.exists() : "App.java does not exist at: ${appJavaFile}"
+
+ def testJavaFile = new File(projectDir, "src/test/java/io/example/test/AppTest.java")
+ assert testJavaFile.exists() : "AppTest.java does not exist at: ${testJavaFile}"
+ println "PASS: Package structure validated"
+
+ // Check package declarations
+ println "Checking package declarations..."
+ def appContent = appJavaFile.text
+ assert appContent.contains("package io.example.test;") :
+ "App.java has incorrect package declaration"
+
+ def testContent = testJavaFile.text
+ assert testContent.contains("package io.example.test;") :
+ "AppTest.java has incorrect package declaration"
+ println "PASS: Package declarations validated"
+
+ // Check test.properties handles special chars correctly
+ def testPropsFile = new File(projectDir, "src/test/resources/test.properties")
+ println "Checking test properties: ${testPropsFile}"
+ assert testPropsFile.exists() : "test.properties does not exist: ${testPropsFile}"
+
+ def testPropsContent = testPropsFile.text
+ assert testPropsContent.contains("app.test.name=my-special-app-test") :
+ "test.properties missing name=my-special-app-test"
+ assert testPropsContent.contains("app.test.version=1.0.0-RC1") :
+ "test.properties missing version=1.0.0-RC1"
+ assert testPropsContent.contains("app.test.java.version=17") :
+ "test.properties missing java.version=17"
+ println "PASS: Test properties validated with special characters"
+
+ // Check GitHub workflows exist
+ println "Checking GitHub workflows..."
+ assert new File(projectDir, ".github/workflows/ci.yml").exists() :
+ "ci.yml does not exist"
+ assert new File(projectDir, ".github/workflows/dependency-check.yml").exists() :
+ "dependency-check.yml does not exist"
+ assert new File(projectDir, ".github/workflows/gitflow-release.yml").exists() :
+ "gitflow-release.yml does not exist"
+ assert new File(projectDir, ".github/workflows/gitflow-hotfix.yml").exists() :
+ "gitflow-hotfix.yml does not exist"
+ println "PASS: GitHub workflows exist"
+
+ // Check .gitignore exists
+ def gitignoreFile = new File(projectDir, ".gitignore")
+ println "Checking .gitignore: ${gitignoreFile}"
+ assert gitignoreFile.exists() : ".gitignore does not exist: ${gitignoreFile}"
+ println "PASS: .gitignore exists"
+
+ println "VERIFICATION PASSED"
+ return true
+} catch (AssertionError e) {
+ println "ERROR: ASSERTION FAILED: ${e.message}"
+ throw e
+} catch (Exception e) {
+ println "ERROR: UNEXPECTED: ${e.message}"
+ e.printStackTrace()
+ throw e
+}
\ No newline at end of file