From 21b27b710afb414d5650f7d90f215f8ca2b727c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20B=C3=BCnger?= Date: Sat, 16 May 2026 15:04:13 +0200 Subject: [PATCH 1/9] Enable Maven 4 --- .github/workflows/maven-verify.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/maven-verify.yml b/.github/workflows/maven-verify.yml index 932827c..ce4b500 100644 --- a/.github/workflows/maven-verify.yml +++ b/.github/workflows/maven-verify.yml @@ -25,3 +25,5 @@ jobs: build: name: Verify uses: apache/maven-gh-actions-shared/.github/workflows/maven-verify.yml@v4 + with: + maven4-enabled: true From 720fc72c120922671cd64d59403309e6e098c867 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20B=C3=BCnger?= Date: Wed, 10 Jun 2026 21:43:44 +0200 Subject: [PATCH 2/9] Set versions from parent for some ITs --- src/it/buildinfo-skip-install-deploy/pom.xml | 14 ++++++++++++++ src/it/compare-flatten/pom.xml | 14 ++++++++++++++ src/it/compare-resume/pom.xml | 14 ++++++++++++++ src/it/git-multi/pom.xml | 14 ++++++++++++++ 4 files changed, 56 insertions(+) diff --git a/src/it/buildinfo-skip-install-deploy/pom.xml b/src/it/buildinfo-skip-install-deploy/pom.xml index 43108f7..bee9b72 100644 --- a/src/it/buildinfo-skip-install-deploy/pom.xml +++ b/src/it/buildinfo-skip-install-deploy/pom.xml @@ -57,6 +57,20 @@ + + + + org.apache.maven.plugins + maven-install-plugin + @version.maven-install-plugin@ + + + org.apache.maven.plugins + maven-deploy-plugin + @version.maven-deploy-plugin@ + + + @project.groupId@ diff --git a/src/it/compare-flatten/pom.xml b/src/it/compare-flatten/pom.xml index f613b6e..a314eb6 100644 --- a/src/it/compare-flatten/pom.xml +++ b/src/it/compare-flatten/pom.xml @@ -53,6 +53,20 @@ + + + + org.apache.maven.plugins + maven-install-plugin + @version.maven-install-plugin@ + + + org.apache.maven.plugins + maven-deploy-plugin + @version.maven-deploy-plugin@ + + + @project.groupId@ diff --git a/src/it/compare-resume/pom.xml b/src/it/compare-resume/pom.xml index 83f40a0..5992880 100644 --- a/src/it/compare-resume/pom.xml +++ b/src/it/compare-resume/pom.xml @@ -52,6 +52,20 @@ + + + + org.apache.maven.plugins + maven-install-plugin + @version.maven-install-plugin@ + + + org.apache.maven.plugins + maven-deploy-plugin + @version.maven-deploy-plugin@ + + + @project.groupId@ diff --git a/src/it/git-multi/pom.xml b/src/it/git-multi/pom.xml index 91c20c1..9f60ee5 100644 --- a/src/it/git-multi/pom.xml +++ b/src/it/git-multi/pom.xml @@ -42,6 +42,20 @@ + + + + org.apache.maven.plugins + maven-install-plugin + @version.maven-install-plugin@ + + + org.apache.maven.plugins + maven-deploy-plugin + @version.maven-deploy-plugin@ + + + pl.project13.maven From b9f4abeaed55890352acc77f722a3bef77421568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20B=C3=BCnger?= Date: Thu, 11 Jun 2026 19:47:33 +0200 Subject: [PATCH 3/9] Fix IT in maven 4 --- .../verify.groovy | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/it/buildinfo-skip-install-deploy/verify.groovy b/src/it/buildinfo-skip-install-deploy/verify.groovy index 2e4a479..ad1de07 100644 --- a/src/it/buildinfo-skip-install-deploy/verify.groovy +++ b/src/it/buildinfo-skip-install-deploy/verify.groovy @@ -35,10 +35,23 @@ assert buildinfo.contains( "artifact-id=multi" ) assert buildinfo.contains( "version=1.0-SNAPSHOT" ) assert buildinfo.contains( "outputs.1.coordinates=org.apache.maven.plugins.it:multi-modA" ) assert buildinfo.contains( "outputs.1.0.filename=multi-modA-1.0-SNAPSHOT.pom" ) -assert buildinfo.contains( "outputs.1.1.filename=multi-modA-1.0-SNAPSHOT.jar" ) + +if (mavenVersion.startsWith('4.') || mavenVersion.startsWith('3.10.')) { + assert buildinfo.contains( "outputs.1.2.filename=multi-modA-1.0-SNAPSHOT.jar" ) +} else { + assert buildinfo.contains( "outputs.1.1.filename=multi-modA-1.0-SNAPSHOT.jar" ) +} + assert buildinfo.contains( "outputs.2.coordinates=org.apache.maven.plugins.it:multi-modB" ) assert buildinfo.contains( "outputs.2.0.filename=multi-modB-1.0-SNAPSHOT.pom" ) -assert buildinfo.contains( "outputs.2.1.filename=multi-modB-1.0-SNAPSHOT.jar" ) + +if (mavenVersion.startsWith('4.') || mavenVersion.startsWith('3.10.')) { + assert buildinfo.contains( "outputs.2.2.filename=multi-modB-1.0-SNAPSHOT.jar" ) +} else { + assert buildinfo.contains( "outputs.2.1.filename=multi-modB-1.0-SNAPSHOT.jar" ) +} + + assert !buildinfo.contains( ".buildinfo" ) assert !buildinfo.contains( "outputs.3" ) @@ -47,12 +60,20 @@ File localModB = new File( basedir, "../../local-repo/org/apache/maven/plugins/i assert localModB.isFile() // check existence of buildinfo in remote repository -File remoteDir = new File( basedir, "modB/target/remote-repo/org/apache/maven/plugins/it/multi-modB/1.0-SNAPSHOT" ) +File remoteDir = null +if (mavenVersion.startsWith('4.') || mavenVersion.startsWith('3.10.')) { + remoteDir = new File( basedir, "target/remote-repo/org/apache/maven/plugins/it/multi-modB/1.0-SNAPSHOT" ) +} else { + remoteDir = new File( basedir, "modB/target/remote-repo/org/apache/maven/plugins/it/multi-modB/1.0-SNAPSHOT" ) +} + assert remoteDir.isDirectory() -for ( File f : remoteDir.listFiles() ) -{ - if ( f.getName().endsWith( ".pom" ) ) - { + +// check if there is a .buildinfo for the first .pom file +for ( File f : remoteDir.listFiles() ) { + // In Maven 4 there is the build-POM and also the new (but with old name) consumer-POM + // The expected ".buildinfo" file is named as the consumer-POM + if ( f.getName().endsWith( ".pom" ) && !f.getName().endsWith( "build.pom" )) { File b = new File( remoteDir, f.getName().replace( ".pom", ".buildinfo" ) ) println b assert b.isFile() From 58e868e545c641b87466f529ee443a38670dae81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20B=C3=BCnger?= Date: Thu, 11 Jun 2026 20:08:25 +0200 Subject: [PATCH 4/9] Fix IT in maven 4 --- .../verify.groovy | 6 ++-- src/it/compare-flatten/verify.groovy | 32 ++++++++++++++----- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/it/buildinfo-skip-install-deploy/verify.groovy b/src/it/buildinfo-skip-install-deploy/verify.groovy index ad1de07..1bcb7c8 100644 --- a/src/it/buildinfo-skip-install-deploy/verify.groovy +++ b/src/it/buildinfo-skip-install-deploy/verify.groovy @@ -36,7 +36,7 @@ assert buildinfo.contains( "version=1.0-SNAPSHOT" ) assert buildinfo.contains( "outputs.1.coordinates=org.apache.maven.plugins.it:multi-modA" ) assert buildinfo.contains( "outputs.1.0.filename=multi-modA-1.0-SNAPSHOT.pom" ) -if (mavenVersion.startsWith('4.') || mavenVersion.startsWith('3.10.')) { +if (mavenVersion.startsWith('4.')) { assert buildinfo.contains( "outputs.1.2.filename=multi-modA-1.0-SNAPSHOT.jar" ) } else { assert buildinfo.contains( "outputs.1.1.filename=multi-modA-1.0-SNAPSHOT.jar" ) @@ -45,7 +45,7 @@ if (mavenVersion.startsWith('4.') || mavenVersion.startsWith('3.10.')) { assert buildinfo.contains( "outputs.2.coordinates=org.apache.maven.plugins.it:multi-modB" ) assert buildinfo.contains( "outputs.2.0.filename=multi-modB-1.0-SNAPSHOT.pom" ) -if (mavenVersion.startsWith('4.') || mavenVersion.startsWith('3.10.')) { +if (mavenVersion.startsWith('4.')) { assert buildinfo.contains( "outputs.2.2.filename=multi-modB-1.0-SNAPSHOT.jar" ) } else { assert buildinfo.contains( "outputs.2.1.filename=multi-modB-1.0-SNAPSHOT.jar" ) @@ -61,7 +61,7 @@ assert localModB.isFile() // check existence of buildinfo in remote repository File remoteDir = null -if (mavenVersion.startsWith('4.') || mavenVersion.startsWith('3.10.')) { +if (mavenVersion.startsWith('4.')) { remoteDir = new File( basedir, "target/remote-repo/org/apache/maven/plugins/it/multi-modB/1.0-SNAPSHOT" ) } else { remoteDir = new File( basedir, "modB/target/remote-repo/org/apache/maven/plugins/it/multi-modB/1.0-SNAPSHOT" ) diff --git a/src/it/compare-flatten/verify.groovy b/src/it/compare-flatten/verify.groovy index 1ce3451..eb01b3d 100644 --- a/src/it/compare-flatten/verify.groovy +++ b/src/it/compare-flatten/verify.groovy @@ -19,13 +19,29 @@ */ String compare = new File( basedir, 'target/flatten-1.0-SNAPSHOT.buildcompare' ).text -assert compare.contains( 'okFiles="flatten-1.0-SNAPSHOT.pom flatten-modB-1.0-SNAPSHOT.pom flatten-modA-1.0-SNAPSHOT.pom"' ) -assert new File( basedir, 'flattened-pom.xml' ).text == new File( basedir, 'target/reference/org.apache.maven.plugins.it/flatten-1.0-SNAPSHOT.pom' ).text -assert new File( basedir, 'modA/flattened-pom.xml' ).text == new File( basedir, 'target/reference/org.apache.maven.plugins.it/flatten-modA-1.0-SNAPSHOT.pom' ).text -assert new File( basedir, 'modB/pom.xml' ).text == new File( basedir, 'target/reference/org.apache.maven.plugins.it/flatten-modB-1.0-SNAPSHOT.pom' ).text +// In Maven 4 the build-bom gets flatten. Its existence also changes the index in buildinfo +if (mavenVersion.startsWith('4.')) { + assert compare.contains( 'okFiles="flatten-1.0-SNAPSHOT.pom flatten-1.0-SNAPSHOT-build.pom flatten-modB-1.0-SNAPSHOT.pom flatten-modB-1.0-SNAPSHOT-build.pom flatten-modA-1.0-SNAPSHOT.pom flatten-modA-1.0-SNAPSHOT-build.pom"' ) + + assert new File( basedir, 'flattened-pom.xml' ).text == new File( basedir, 'target/reference/org.apache.maven.plugins.it/flatten-1.0-SNAPSHOT-build.pom' ).text + assert new File( basedir, 'modA/flattened-pom.xml' ).text == new File( basedir, 'target/reference/org.apache.maven.plugins.it/flatten-modA-1.0-SNAPSHOT-build.pom' ).text + assert new File( basedir, 'modB/pom.xml' ).text == new File( basedir, 'target/reference/org.apache.maven.plugins.it/flatten-modB-1.0-SNAPSHOT-build.pom' ).text + + String buildinfo = new File( basedir, 'target/flatten-1.0-SNAPSHOT.buildinfo' ).text + assert buildinfo.contains( "outputs.0.1.length=" + new File( basedir, 'flattened-pom.xml' ).size() ) + assert buildinfo.contains( "outputs.1.1.length=" + new File( basedir, 'modB/pom.xml' ).size() ) + assert buildinfo.contains( "outputs.2.1.length=" + new File( basedir, 'modA/flattened-pom.xml' ).size() ) +} else { + assert compare.contains( 'okFiles="flatten-1.0-SNAPSHOT.pom flatten-modB-1.0-SNAPSHOT.pom flatten-modA-1.0-SNAPSHOT.pom"' ) + + assert new File( basedir, 'flattened-pom.xml' ).text == new File( basedir, 'target/reference/org.apache.maven.plugins.it/flatten-1.0-SNAPSHOT.pom' ).text + assert new File( basedir, 'modA/flattened-pom.xml' ).text == new File( basedir, 'target/reference/org.apache.maven.plugins.it/flatten-modA-1.0-SNAPSHOT.pom' ).text + assert new File( basedir, 'modB/pom.xml' ).text == new File( basedir, 'target/reference/org.apache.maven.plugins.it/flatten-modB-1.0-SNAPSHOT.pom' ).text + + String buildinfo = new File( basedir, 'target/flatten-1.0-SNAPSHOT.buildinfo' ).text + assert buildinfo.contains( "outputs.0.0.length=" + new File( basedir, 'flattened-pom.xml' ).size() ) + assert buildinfo.contains( "outputs.1.0.length=" + new File( basedir, 'modB/pom.xml' ).size() ) + assert buildinfo.contains( "outputs.2.0.length=" + new File( basedir, 'modA/flattened-pom.xml' ).size() ) +} -String buildinfo = new File( basedir, 'target/flatten-1.0-SNAPSHOT.buildinfo' ).text -assert buildinfo.contains( "outputs.0.0.length=" + new File( basedir, 'flattened-pom.xml' ).size() ) -assert buildinfo.contains( "outputs.1.0.length=" + new File( basedir, 'modB/pom.xml' ).size() ) -assert buildinfo.contains( "outputs.2.0.length=" + new File( basedir, 'modA/flattened-pom.xml' ).size() ) From 8ad495c7c22cb545b2dd707bc59f19e9cf7d3504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20B=C3=BCnger?= Date: Thu, 11 Jun 2026 20:43:58 +0200 Subject: [PATCH 5/9] Fix IT in maven 4 --- src/it/compare-mono/pom.xml | 18 ++++++++++++++++++ src/it/compare-mono/verify.groovy | 14 ++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/it/compare-mono/pom.xml b/src/it/compare-mono/pom.xml index 920231f..aa0b1a2 100644 --- a/src/it/compare-mono/pom.xml +++ b/src/it/compare-mono/pom.xml @@ -91,6 +91,24 @@ + + org.apache.rat + apache-rat-plugin + @version.apache-rat-plugin@ + + + **/build.log.1 + + + + + verify + + check + + + + diff --git a/src/it/compare-mono/verify.groovy b/src/it/compare-mono/verify.groovy index 71523fe..dde189b 100644 --- a/src/it/compare-mono/verify.groovy +++ b/src/it/compare-mono/verify.groovy @@ -26,10 +26,20 @@ assert compareFile.isFile() String compare = compareFile.text assert compare.contains( "version=1.0-SNAPSHOT" ) -assert compare.contains( "ok=1" ) + +// In Maven 4 the build-bom gets flatten. Its existence also changes the index in buildinfo +if (mavenVersion.startsWith('4.')) { + + assert compare.contains( "ok=2" ) + assert compare.contains( 'okFiles="mono-1.0-SNAPSHOT.pom mono-1.0-SNAPSHOT-build.pom"' ) +} else { + assert compare.contains( "ok=1" ) + assert compare.contains( 'okFiles="mono-1.0-SNAPSHOT.pom"' ) +} + assert compare.contains( "ko=1" ) assert compare.contains( "ignored=1" ) -assert compare.contains( 'okFiles="mono-1.0-SNAPSHOT.pom"' ) + assert compare.contains( 'koFiles="mono-1.0-SNAPSHOT.jar"' ) assert compare.contains( 'ignoredFiles="mono-1.0-SNAPSHOT.spdx.json"' ) if( File.separator == '/' ) { From 546546d51f3ccf63c94fd29722e6d05a42e1a096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20B=C3=BCnger?= Date: Thu, 11 Jun 2026 20:54:11 +0200 Subject: [PATCH 6/9] Fix IT in maven 4 --- src/it/buildinfo-mono/verify.groovy | 18 ++++++++++++++---- src/it/compare-mono/verify.groovy | 4 +--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/it/buildinfo-mono/verify.groovy b/src/it/buildinfo-mono/verify.groovy index a2903ff..f7d0715 100644 --- a/src/it/buildinfo-mono/verify.groovy +++ b/src/it/buildinfo-mono/verify.groovy @@ -25,8 +25,17 @@ assert buildinfoFile.isFile() // check generated buildinfo content String buildinfo = buildinfoFile.text -assert buildinfo.contains( "outputs.0.filename=mono-1.0-SNAPSHOT.pom" ) -assert buildinfo.contains( "outputs.1.filename=mono-1.0-SNAPSHOT.jar" ) + +// In Maven 4 we build and consumer POM +if (mavenVersion.startsWith('4.')) { + assert buildinfo.contains( "outputs.0.filename=mono-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "outputs.1.filename=mono-1.0-SNAPSHOT-build.pom" ) + assert buildinfo.contains( "outputs.2.filename=mono-1.0-SNAPSHOT.jar" ) +} else { + assert buildinfo.contains( "outputs.0.filename=mono-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "outputs.1.filename=mono-1.0-SNAPSHOT.jar" ) +} + assert buildinfo.contains( "mvn.minimum.version=3.0.5" ) assert buildinfo.contains( "mvn.rebuild-args=-Dmaven.session.versionFilter=e(org.slf4j:slf4j-api:(1.7.36,))" ) @@ -40,8 +49,9 @@ File remoteDir = new File( basedir, "target/remote-repo/org/apache/maven/plugins int count = 0; for ( File f : remoteDir.listFiles() ) { - if ( f.getName().endsWith( ".pom" ) ) - { + // In Maven 4 there is the build-POM and also the new (but with old name) consumer-POM + // The expected ".buildinfo" file is named as the consumer-POM + if ( f.getName().endsWith( ".pom" ) && !f.getName().endsWith( "build.pom" )) { File b = new File( remoteDir, f.getName().replace( ".pom", ".buildinfo" ) ) println b assert b.isFile() diff --git a/src/it/compare-mono/verify.groovy b/src/it/compare-mono/verify.groovy index dde189b..fcf257c 100644 --- a/src/it/compare-mono/verify.groovy +++ b/src/it/compare-mono/verify.groovy @@ -27,9 +27,8 @@ String compare = compareFile.text assert compare.contains( "version=1.0-SNAPSHOT" ) -// In Maven 4 the build-bom gets flatten. Its existence also changes the index in buildinfo +// In Maven 4 we build and consumer POM if (mavenVersion.startsWith('4.')) { - assert compare.contains( "ok=2" ) assert compare.contains( 'okFiles="mono-1.0-SNAPSHOT.pom mono-1.0-SNAPSHOT-build.pom"' ) } else { @@ -39,7 +38,6 @@ if (mavenVersion.startsWith('4.')) { assert compare.contains( "ko=1" ) assert compare.contains( "ignored=1" ) - assert compare.contains( 'koFiles="mono-1.0-SNAPSHOT.jar"' ) assert compare.contains( 'ignoredFiles="mono-1.0-SNAPSHOT.spdx.json"' ) if( File.separator == '/' ) { From 4f934379d45db862477b9f96dc2b6f6b5a3080bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20B=C3=BCnger?= Date: Thu, 11 Jun 2026 21:13:43 +0200 Subject: [PATCH 7/9] Fix IT in maven 4 --- pom.xml | 2 +- src/it/buildinfo-mono/verify.groovy | 4 +- src/it/buildinfo-multi/pom.xml | 20 ++++- src/it/buildinfo-multi/verify.groovy | 115 +++++++++++++++++++-------- 4 files changed, 106 insertions(+), 35 deletions(-) diff --git a/pom.xml b/pom.xml index 06d660d..40865f4 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ org.apache.maven.plugins maven-plugins - + 48 diff --git a/src/it/buildinfo-mono/verify.groovy b/src/it/buildinfo-mono/verify.groovy index f7d0715..2c3829e 100644 --- a/src/it/buildinfo-mono/verify.groovy +++ b/src/it/buildinfo-mono/verify.groovy @@ -45,13 +45,15 @@ assert local.isFile() // check existence of buildinfo in remote repository File remoteDir = new File( basedir, "target/remote-repo/org/apache/maven/plugins/it/mono/1.0-SNAPSHOT") - assert remoteDir.isDirectory() +assert remoteDir.isDirectory() + int count = 0; for ( File f : remoteDir.listFiles() ) { // In Maven 4 there is the build-POM and also the new (but with old name) consumer-POM // The expected ".buildinfo" file is named as the consumer-POM if ( f.getName().endsWith( ".pom" ) && !f.getName().endsWith( "build.pom" )) { + File b = new File( remoteDir, f.getName().replace( ".pom", ".buildinfo" ) ) println b assert b.isFile() diff --git a/src/it/buildinfo-multi/pom.xml b/src/it/buildinfo-multi/pom.xml index a74fac7..e0823ac 100644 --- a/src/it/buildinfo-multi/pom.xml +++ b/src/it/buildinfo-multi/pom.xml @@ -23,7 +23,7 @@ org.apache.maven maven-parent - 39 + 48 org.apache.maven.plugins.it @@ -91,6 +91,24 @@ + + org.apache.rat + apache-rat-plugin + @version.apache-rat-plugin@ + + + **/build.log.1 + + + + + verify + + check + + + + diff --git a/src/it/buildinfo-multi/verify.groovy b/src/it/buildinfo-multi/verify.groovy index d34039c..60ab453 100644 --- a/src/it/buildinfo-multi/verify.groovy +++ b/src/it/buildinfo-multi/verify.groovy @@ -39,54 +39,105 @@ assert buildinfoFile.text.equals( ignoreJar.text ) // check generated aggregate buildinfo content String buildinfo = ignoreJar.text + + assert buildinfo.contains( "group-id=org.apache.maven.plugins.it" ) assert buildinfo.contains( "artifact-id=multi" ) assert buildinfo.contains( "version=1.0-SNAPSHOT" ) -assert buildinfo.contains( "outputs.1.coordinates=org.apache.maven.plugins.it:multi-modA" ) -assert buildinfo.contains( "outputs.1.0.filename=multi-modA-1.0-SNAPSHOT.pom" ) -assert buildinfo.contains( "outputs.1.1.filename=multi-modA-1.0-SNAPSHOT.jar" ) -assert !buildinfo.contains( "outputs.1.2.filename=" ) -assert buildinfo.contains( "# ignored multi-modA-1.0-SNAPSHOT.spdx.json" ) - -assert buildinfo.contains( "outputs.2.coordinates=org.apache.maven.plugins.it:multi-modB" ) -assert buildinfo.contains( "outputs.2.0.filename=multi-modB-1.0-SNAPSHOT.pom" ) -assert buildinfo.contains( "outputs.2.1.filename=multi-modB-1.0-SNAPSHOT.jar" ) -assert !buildinfo.contains( "outputs.2.2.filename=" ) -assert buildinfo.contains( "# ignored multi-modB-1.0-SNAPSHOT.spdx.json" ) - -assert buildinfo.contains( "outputs.3.coordinates=org.apache.maven.plugins.it:ignore-all" ) -assert buildinfo.contains( "# ignored ignore-all-1.0-SNAPSHOT.pom" ) -assert buildinfo.contains( "# ignored ignore-all-1.0-SNAPSHOT.jar" ) -assert !buildinfo.contains( "outputs.3.0.filename=" ) -assert buildinfo.contains( "# ignored ignore-pom-1.0-SNAPSHOT.spdx.json" ) - -assert buildinfo.contains( "outputs.4.coordinates=org.apache.maven.plugins.it:ignore-pom" ) -assert buildinfo.contains( "# ignored ignore-pom-1.0-SNAPSHOT.pom" ) -assert buildinfo.contains( "outputs.4.0.filename=ignore-pom-1.0-SNAPSHOT.jar" ) -assert !buildinfo.contains( "outputs.4.1.filename=" ) -assert buildinfo.contains( "# ignored ignore-pom-1.0-SNAPSHOT.spdx.json" ) - -assert buildinfo.contains( "outputs.5.coordinates=org.apache.maven.plugins.it:ignore-jar" ) -assert buildinfo.contains( "outputs.5.0.filename=ignore-jar-1.0-SNAPSHOT.pom" ) -assert buildinfo.contains( "# ignored ignore-jar-1.0-SNAPSHOT.jar" ) -assert !buildinfo.contains( "outputs.5.1.filename=" ) -assert buildinfo.contains( "# ignored ignore-jar-1.0-SNAPSHOT.spdx.json" ) +// In Maven 4 we build and consumer POM +if (mavenVersion.startsWith('4.')) { + assert buildinfo.contains( "outputs.1.coordinates=org.apache.maven.plugins.it:multi-modA" ) + assert buildinfo.contains( "outputs.1.0.filename=multi-modA-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "outputs.1.1.filename=multi-modA-1.0-SNAPSHOT-build.pom" ) + assert buildinfo.contains( "outputs.1.2.filename=multi-modA-1.0-SNAPSHOT.jar" ) + assert !buildinfo.contains( "outputs.1.3.filename=" ) + assert buildinfo.contains( "# ignored multi-modA-1.0-SNAPSHOT.spdx.json" ) + + assert buildinfo.contains( "outputs.2.coordinates=org.apache.maven.plugins.it:multi-modB" ) + assert buildinfo.contains( "outputs.2.0.filename=multi-modB-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "outputs.2.1.filename=multi-modB-1.0-SNAPSHOT-build.pom" ) + assert buildinfo.contains( "outputs.2.2.filename=multi-modB-1.0-SNAPSHOT.jar" ) + assert !buildinfo.contains( "outputs.2.3.filename=" ) + assert buildinfo.contains( "# ignored multi-modB-1.0-SNAPSHOT.spdx.json" ) + + assert buildinfo.contains( "outputs.3.coordinates=org.apache.maven.plugins.it:ignore-all" ) + assert buildinfo.contains( "# ignored ignore-all-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "# ignored ignore-all-1.0-SNAPSHOT-build.pom" ) + assert buildinfo.contains( "# ignored ignore-all-1.0-SNAPSHOT.jar" ) + assert !buildinfo.contains( "outputs.3.0.filename=" ) + assert buildinfo.contains( "# ignored ignore-pom-1.0-SNAPSHOT.spdx.json" ) + + assert buildinfo.contains( "outputs.4.coordinates=org.apache.maven.plugins.it:ignore-pom" ) + assert buildinfo.contains( "# ignored ignore-pom-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "# ignored ignore-pom-1.0-SNAPSHOT-build.pom" ) + assert buildinfo.contains( "outputs.4.0.filename=ignore-pom-1.0-SNAPSHOT.jar" ) + assert !buildinfo.contains( "outputs.4.1.filename=" ) + assert buildinfo.contains( "# ignored ignore-pom-1.0-SNAPSHOT.spdx.json" ) + + assert buildinfo.contains( "outputs.5.coordinates=org.apache.maven.plugins.it:ignore-jar" ) + assert buildinfo.contains( "outputs.5.0.filename=ignore-jar-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "outputs.5.1.filename=ignore-jar-1.0-SNAPSHOT-build.pom" ) + assert buildinfo.contains( "# ignored ignore-jar-1.0-SNAPSHOT.jar" ) + assert !buildinfo.contains( "outputs.5.2.filename=" ) + assert buildinfo.contains( "# ignored ignore-jar-1.0-SNAPSHOT.spdx.json" ) +} else { + + assert buildinfo.contains( "outputs.1.coordinates=org.apache.maven.plugins.it:multi-modA" ) + assert buildinfo.contains( "outputs.1.0.filename=multi-modA-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "outputs.1.1.filename=multi-modA-1.0-SNAPSHOT.jar" ) + assert !buildinfo.contains( "outputs.1.2.filename=" ) + assert buildinfo.contains( "# ignored multi-modA-1.0-SNAPSHOT.spdx.json" ) + + assert buildinfo.contains( "outputs.2.coordinates=org.apache.maven.plugins.it:multi-modB" ) + assert buildinfo.contains( "outputs.2.0.filename=multi-modB-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "outputs.2.1.filename=multi-modB-1.0-SNAPSHOT.jar" ) + assert !buildinfo.contains( "outputs.2.2.filename=" ) + assert buildinfo.contains( "# ignored multi-modB-1.0-SNAPSHOT.spdx.json" ) + + assert buildinfo.contains( "outputs.3.coordinates=org.apache.maven.plugins.it:ignore-all" ) + assert buildinfo.contains( "# ignored ignore-all-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "# ignored ignore-all-1.0-SNAPSHOT.jar" ) + assert !buildinfo.contains( "outputs.3.0.filename=" ) + assert buildinfo.contains( "# ignored ignore-pom-1.0-SNAPSHOT.spdx.json" ) + + assert buildinfo.contains( "outputs.4.coordinates=org.apache.maven.plugins.it:ignore-pom" ) + assert buildinfo.contains( "# ignored ignore-pom-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "outputs.4.0.filename=ignore-pom-1.0-SNAPSHOT.jar" ) + assert !buildinfo.contains( "outputs.4.1.filename=" ) + assert buildinfo.contains( "# ignored ignore-pom-1.0-SNAPSHOT.spdx.json" ) + + assert buildinfo.contains( "outputs.5.coordinates=org.apache.maven.plugins.it:ignore-jar" ) + assert buildinfo.contains( "outputs.5.0.filename=ignore-jar-1.0-SNAPSHOT.pom" ) + assert buildinfo.contains( "# ignored ignore-jar-1.0-SNAPSHOT.jar" ) + assert !buildinfo.contains( "outputs.5.1.filename=" ) + assert buildinfo.contains( "# ignored ignore-jar-1.0-SNAPSHOT.spdx.json" ) +} assert !buildinfo.contains( ".buildinfo" ) assert buildinfo.contains( "mvn.aggregate.artifact-id=ignore-jar" ) + // check existence of buildinfo in local repository File localIgnoreJar = new File( basedir, "../../local-repo/org/apache/maven/plugins/it/ignore-jar/1.0-SNAPSHOT/ignore-jar-1.0-SNAPSHOT.buildinfo") assert localIgnoreJar.isFile() // check existence of buildinfo in remote repository -File remoteDir = new File( basedir, "ignore-jar/target/remote-repo/org/apache/maven/plugins/it/ignore-jar/1.0-SNAPSHOT" ) +File remoteDir = null +if (mavenVersion.startsWith('4.')) { + remoteDir = new File( basedir, "target/remote-repo/org/apache/maven/plugins/it/ignore-jar/1.0-SNAPSHOT" ) +} else { + remoteDir = new File( basedir, "ignore-jar/target/remote-repo/org/apache/maven/plugins/it/ignore-jar/1.0-SNAPSHOT" ) +} + assert remoteDir.isDirectory() + for ( File f : remoteDir.listFiles() ) { - if ( f.getName().endsWith( ".pom" ) ) - { + // In Maven 4 there is the build-POM and also the new (but with old name) consumer-POM + // The expected ".buildinfo" file is named as the consumer-POM + if ( f.getName().endsWith( ".pom" ) && !f.getName().endsWith( "build.pom" )) { + File b = new File( remoteDir, f.getName().replace( ".pom", ".buildinfo" ) ) println b assert b.isFile() From d6a67e6e2ec1ef1d22cd14721d2e57cab9aa9e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20B=C3=BCnger?= Date: Thu, 11 Jun 2026 21:21:05 +0200 Subject: [PATCH 8/9] Formatting --- src/it/buildinfo-mono/verify.groovy | 4 +--- src/it/buildinfo-multi/verify.groovy | 6 +----- src/it/compare-flatten/verify.groovy | 1 - 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/it/buildinfo-mono/verify.groovy b/src/it/buildinfo-mono/verify.groovy index 2c3829e..fa4cc1e 100644 --- a/src/it/buildinfo-mono/verify.groovy +++ b/src/it/buildinfo-mono/verify.groovy @@ -48,12 +48,10 @@ File remoteDir = new File( basedir, "target/remote-repo/org/apache/maven/plugins assert remoteDir.isDirectory() int count = 0; -for ( File f : remoteDir.listFiles() ) -{ +for ( File f : remoteDir.listFiles() ) { // In Maven 4 there is the build-POM and also the new (but with old name) consumer-POM // The expected ".buildinfo" file is named as the consumer-POM if ( f.getName().endsWith( ".pom" ) && !f.getName().endsWith( "build.pom" )) { - File b = new File( remoteDir, f.getName().replace( ".pom", ".buildinfo" ) ) println b assert b.isFile() diff --git a/src/it/buildinfo-multi/verify.groovy b/src/it/buildinfo-multi/verify.groovy index 60ab453..f457ed1 100644 --- a/src/it/buildinfo-multi/verify.groovy +++ b/src/it/buildinfo-multi/verify.groovy @@ -40,7 +40,6 @@ assert buildinfoFile.text.equals( ignoreJar.text ) // check generated aggregate buildinfo content String buildinfo = ignoreJar.text - assert buildinfo.contains( "group-id=org.apache.maven.plugins.it" ) assert buildinfo.contains( "artifact-id=multi" ) assert buildinfo.contains( "version=1.0-SNAPSHOT" ) @@ -117,7 +116,6 @@ if (mavenVersion.startsWith('4.')) { assert !buildinfo.contains( ".buildinfo" ) assert buildinfo.contains( "mvn.aggregate.artifact-id=ignore-jar" ) - // check existence of buildinfo in local repository File localIgnoreJar = new File( basedir, "../../local-repo/org/apache/maven/plugins/it/ignore-jar/1.0-SNAPSHOT/ignore-jar-1.0-SNAPSHOT.buildinfo") assert localIgnoreJar.isFile() @@ -132,12 +130,10 @@ if (mavenVersion.startsWith('4.')) { assert remoteDir.isDirectory() -for ( File f : remoteDir.listFiles() ) -{ +for ( File f : remoteDir.listFiles() ) { // In Maven 4 there is the build-POM and also the new (but with old name) consumer-POM // The expected ".buildinfo" file is named as the consumer-POM if ( f.getName().endsWith( ".pom" ) && !f.getName().endsWith( "build.pom" )) { - File b = new File( remoteDir, f.getName().replace( ".pom", ".buildinfo" ) ) println b assert b.isFile() diff --git a/src/it/compare-flatten/verify.groovy b/src/it/compare-flatten/verify.groovy index eb01b3d..48d0f3d 100644 --- a/src/it/compare-flatten/verify.groovy +++ b/src/it/compare-flatten/verify.groovy @@ -44,4 +44,3 @@ if (mavenVersion.startsWith('4.')) { assert buildinfo.contains( "outputs.1.0.length=" + new File( basedir, 'modB/pom.xml' ).size() ) assert buildinfo.contains( "outputs.2.0.length=" + new File( basedir, 'modA/flattened-pom.xml' ).size() ) } - From cd748e742737f3e2e44e689d487a018177015bbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20B=C3=BCnger?= Date: Thu, 11 Jun 2026 21:37:12 +0200 Subject: [PATCH 9/9] Change order of goals and phase in two IT --- src/it/buildinfo-multi/pom.xml | 2 +- src/it/compare-mono/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/it/buildinfo-multi/pom.xml b/src/it/buildinfo-multi/pom.xml index e0823ac..ab3ecc9 100644 --- a/src/it/buildinfo-multi/pom.xml +++ b/src/it/buildinfo-multi/pom.xml @@ -102,10 +102,10 @@ - verify check + verify diff --git a/src/it/compare-mono/pom.xml b/src/it/compare-mono/pom.xml index aa0b1a2..50c8f05 100644 --- a/src/it/compare-mono/pom.xml +++ b/src/it/compare-mono/pom.xml @@ -102,10 +102,10 @@ - verify check + verify