From 8e82176a01eaaa9eea65dc226be0a6d922bc5b81 Mon Sep 17 00:00:00 2001 From: Mark Derricutt Date: Fri, 3 Nov 2023 22:47:15 +1300 Subject: [PATCH 1/4] Added distributionManagement IT test Change-Id: I72ee773efceb476e70d2adeda24aec12293691cc --- .../invoker.properties | 1 + src/it/distributionManagemetTile/pom.xml | 16 +++++++++++ .../projectA/pom.xml | 27 +++++++++++++++++++ .../distributionManagemetTile/tileA/pom.xml | 23 ++++++++++++++++ .../distributionManagemetTile/tileA/tile.xml | 18 +++++++++++++ src/it/distributionManagemetTile/verify.bsh | 13 +++++++++ .../TilesMavenLifecycleParticipant.groovy | 16 +++++------ 7 files changed, 105 insertions(+), 9 deletions(-) create mode 100644 src/it/distributionManagemetTile/invoker.properties create mode 100644 src/it/distributionManagemetTile/pom.xml create mode 100644 src/it/distributionManagemetTile/projectA/pom.xml create mode 100644 src/it/distributionManagemetTile/tileA/pom.xml create mode 100644 src/it/distributionManagemetTile/tileA/tile.xml create mode 100644 src/it/distributionManagemetTile/verify.bsh diff --git a/src/it/distributionManagemetTile/invoker.properties b/src/it/distributionManagemetTile/invoker.properties new file mode 100644 index 0000000..c9cdf7b --- /dev/null +++ b/src/it/distributionManagemetTile/invoker.properties @@ -0,0 +1 @@ +invoker.goals = clean dependency:go-offline help:effective-pom diff --git a/src/it/distributionManagemetTile/pom.xml b/src/it/distributionManagemetTile/pom.xml new file mode 100644 index 0000000..d20c148 --- /dev/null +++ b/src/it/distributionManagemetTile/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + io.repaint.maven + distribution-management-test + 1.0-SNAPSHOT + pom + + Maven Tiles Order Test + + + tileA + projectA + + diff --git a/src/it/distributionManagemetTile/projectA/pom.xml b/src/it/distributionManagemetTile/projectA/pom.xml new file mode 100644 index 0000000..bb560e1 --- /dev/null +++ b/src/it/distributionManagemetTile/projectA/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + io.repaint.maven + projectA + 1 + pom + + Maven Distribution Management Test + + + + + io.repaint.maven + tiles-maven-plugin + @project.version@ + true + + + io.repaint.maven:tileA:1 + + + + + + diff --git a/src/it/distributionManagemetTile/tileA/pom.xml b/src/it/distributionManagemetTile/tileA/pom.xml new file mode 100644 index 0000000..71ab6de --- /dev/null +++ b/src/it/distributionManagemetTile/tileA/pom.xml @@ -0,0 +1,23 @@ + + + 4.0.0 + + io.repaint.maven + tileA + 1 + tile + + Maven Tiles Distribution Management Test - TileA + + + + + io.repaint.maven + tiles-maven-plugin + @project.version@ + true + + + + + diff --git a/src/it/distributionManagemetTile/tileA/tile.xml b/src/it/distributionManagemetTile/tileA/tile.xml new file mode 100644 index 0000000..2168641 --- /dev/null +++ b/src/it/distributionManagemetTile/tileA/tile.xml @@ -0,0 +1,18 @@ + + + 4.0.0 + + + + sonatype-staging + oss.sonatype.org Staging Repository + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + sonatype-snapshots + oss.sonatype.org Snapshot Repository + https://oss.sonatype.org/content/repositories/snapshots/ + + + + \ No newline at end of file diff --git a/src/it/distributionManagemetTile/verify.bsh b/src/it/distributionManagemetTile/verify.bsh new file mode 100644 index 0000000..bae48af --- /dev/null +++ b/src/it/distributionManagemetTile/verify.bsh @@ -0,0 +1,13 @@ +import java.io.*; +import java.util.*; + +File file = new File(basedir, "build.log" ); +if ( !file.isFile() ) { + throw new FileNotFoundException( "Could not find build log: " + file ); +} + +String content = new Scanner(file).useDelimiter("\\Z").next(); + +// tileX should win +if (!content.contains("oss.sonatype.org Staging Repository")) + throw new Exception("oss.sonatype.org Staging Repository expected to be in effective pom"); diff --git a/src/main/groovy/io/repaint/maven/tiles/TilesMavenLifecycleParticipant.groovy b/src/main/groovy/io/repaint/maven/tiles/TilesMavenLifecycleParticipant.groovy index 678564c..628e065 100644 --- a/src/main/groovy/io/repaint/maven/tiles/TilesMavenLifecycleParticipant.groovy +++ b/src/main/groovy/io/repaint/maven/tiles/TilesMavenLifecycleParticipant.groovy @@ -25,7 +25,6 @@ import org.apache.maven.RepositoryUtils import org.apache.maven.artifact.Artifact import org.apache.maven.artifact.DefaultArtifact import org.apache.maven.artifact.handler.DefaultArtifactHandler -import org.apache.maven.artifact.repository.ArtifactRepository import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy import org.apache.maven.artifact.repository.MavenArtifactRepository import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout @@ -309,7 +308,7 @@ class TilesMavenLifecycleParticipant extends AbstractMavenLifecycleParticipant { // disabled explicit lookup as these seem to be injected just fine. Are these required for eclipse m2e> //repositoryFactory = mavenSession.container.lookup(ArtifactRepositoryFactory) - //repositoryLayouts = mavenSession.lookupMap(ArtifactRepositoryLayout.class.getName()) as Map + repositoryLayouts = mavenSession.lookupMap(ArtifactRepositoryLayout.class.getName()) as Map List allProjects = mavenSession.getProjects() if (allProjects != null) { @@ -349,7 +348,6 @@ class TilesMavenLifecycleParticipant extends AbstractMavenLifecycleParticipant { } else { return new ArtifactRepositoryPolicy(true, UPDATE_POLICY_ALWAYS, CHECKSUM_POLICY_WARN) } - } /** @@ -364,10 +362,11 @@ class TilesMavenLifecycleParticipant extends AbstractMavenLifecycleParticipant { if (distributionManagement) { if (distributionManagement.repository) { - ArtifactRepository repo = new MavenArtifactRepository( + ArtifactRepositoryLayout layout = repositoryLayouts.get(distributionManagement.repository.layout); + MavenArtifactRepository repo = new MavenArtifactRepository( distributionManagement.repository.id, getReleaseDistributionManagementRepositoryUrl(project), - repositoryFactory.layout, + layout, getArtifactRepositoryPolicy(distributionManagement.repository.snapshots), getArtifactRepositoryPolicy(distributionManagement.repository.releases)) project.setReleaseArtifactRepository(repo) @@ -375,10 +374,11 @@ class TilesMavenLifecycleParticipant extends AbstractMavenLifecycleParticipant { } if (distributionManagement.snapshotRepository) { - ArtifactRepository repo = new MavenArtifactRepository( + ArtifactRepositoryLayout layout = repositoryLayouts.get(distributionManagement.repository.layout); + MavenArtifactRepository repo = new MavenArtifactRepository( distributionManagement.snapshotRepository.id, getSnapshotDistributionManagementRepositoryUrl(project), - repositoryFactory.layout, + layout, getArtifactRepositoryPolicy(distributionManagement.snapshotRepository.snapshots), getArtifactRepositoryPolicy(distributionManagement.snapshotRepository.releases)) project.setReleaseArtifactRepository(repo) @@ -503,8 +503,6 @@ class TilesMavenLifecycleParticipant extends AbstractMavenLifecycleParticipant { Model read(InputStream input, Map options) throws IOException, ModelParseException { Model model = modelProcessor.read(input, options) - - use(GavUtil) { // when we reference a submodule of a CI Friendly module in a pom (i.e. a workspace pom in Eclipse) From 0a85881fc1556f37bac651a7516f060be6a3bc76 Mon Sep 17 00:00:00 2001 From: Mark Derricutt Date: Thu, 9 Nov 2023 15:35:06 +1300 Subject: [PATCH 2/4] Resolve issues with missing snapshot repositorie. - Looks like we were still referring to repository instead of snapshotRepository when setting the snapshot repo. - Updated distributionManagement IT test to call `deploy` which triggers the error. - Updated IT repository to point to file:///tmp... so we can "deploy" - Added deploy skipping to top level reactor build - Added to the 'release tile's pom.xml so it can deploy. - Updated IT test verification to check for both repository ID and URL Fixes #144 Change-Id: I4e9b9d561d81dd814080ecabfe3d39e0a43abb76 --- .../invoker.properties | 2 +- src/it/distributionManagemetTile/pom.xml | 19 +++++++++++++++++-- .../distributionManagemetTile/tileA/pom.xml | 13 +++++++++++++ .../distributionManagemetTile/tileA/tile.xml | 12 ++++++------ src/it/distributionManagemetTile/verify.bsh | 6 ++++-- .../TilesMavenLifecycleParticipant.groovy | 4 ++-- 6 files changed, 43 insertions(+), 13 deletions(-) diff --git a/src/it/distributionManagemetTile/invoker.properties b/src/it/distributionManagemetTile/invoker.properties index c9cdf7b..1265339 100644 --- a/src/it/distributionManagemetTile/invoker.properties +++ b/src/it/distributionManagemetTile/invoker.properties @@ -1 +1 @@ -invoker.goals = clean dependency:go-offline help:effective-pom +invoker.goals = clean dependency:go-offline help:effective-pom deploy diff --git a/src/it/distributionManagemetTile/pom.xml b/src/it/distributionManagemetTile/pom.xml index d20c148..54b50e9 100644 --- a/src/it/distributionManagemetTile/pom.xml +++ b/src/it/distributionManagemetTile/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 io.repaint.maven @@ -7,10 +8,24 @@ 1.0-SNAPSHOT pom - Maven Tiles Order Test + Maven Tiles Distribution Management Test tileA projectA + + + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.1 + + true + + + + + diff --git a/src/it/distributionManagemetTile/tileA/pom.xml b/src/it/distributionManagemetTile/tileA/pom.xml index 71ab6de..7e17ab9 100644 --- a/src/it/distributionManagemetTile/tileA/pom.xml +++ b/src/it/distributionManagemetTile/tileA/pom.xml @@ -9,6 +9,19 @@ Maven Tiles Distribution Management Test - TileA + + + repaint-staging + io.repaint Staging Repository + file:///tmp/maven-tiles/staging/ + + + repaint-snapshots + io.repaint Snapshot Repository + file:///tmp/maven-tiles/snapshot/ + + + diff --git a/src/it/distributionManagemetTile/tileA/tile.xml b/src/it/distributionManagemetTile/tileA/tile.xml index 2168641..5773dcb 100644 --- a/src/it/distributionManagemetTile/tileA/tile.xml +++ b/src/it/distributionManagemetTile/tileA/tile.xml @@ -4,14 +4,14 @@ - sonatype-staging - oss.sonatype.org Staging Repository - https://oss.sonatype.org/service/local/staging/deploy/maven2/ + repaint-tile-staging + io.repaint Staging Repository + file:///tmp/maven-tiles/staging/ - sonatype-snapshots - oss.sonatype.org Snapshot Repository - https://oss.sonatype.org/content/repositories/snapshots/ + repaint-tile-snapshots + io.repaint Snapshot Repository + file:///tmp/maven-tiles/snapshot/ diff --git a/src/it/distributionManagemetTile/verify.bsh b/src/it/distributionManagemetTile/verify.bsh index bae48af..1da0e27 100644 --- a/src/it/distributionManagemetTile/verify.bsh +++ b/src/it/distributionManagemetTile/verify.bsh @@ -9,5 +9,7 @@ if ( !file.isFile() ) { String content = new Scanner(file).useDelimiter("\\Z").next(); // tileX should win -if (!content.contains("oss.sonatype.org Staging Repository")) - throw new Exception("oss.sonatype.org Staging Repository expected to be in effective pom"); +if (!content.contains("repaint-tile-staging")) + throw new Exception("repaint-tile-staging expected to be in effective pom"); +if (!content.contains("io.repaint Staging Repository")) + throw new Exception("io.repaint Staging Repository expected to be in effective pom"); diff --git a/src/main/groovy/io/repaint/maven/tiles/TilesMavenLifecycleParticipant.groovy b/src/main/groovy/io/repaint/maven/tiles/TilesMavenLifecycleParticipant.groovy index 628e065..4ac6354 100644 --- a/src/main/groovy/io/repaint/maven/tiles/TilesMavenLifecycleParticipant.groovy +++ b/src/main/groovy/io/repaint/maven/tiles/TilesMavenLifecycleParticipant.groovy @@ -374,14 +374,14 @@ class TilesMavenLifecycleParticipant extends AbstractMavenLifecycleParticipant { } if (distributionManagement.snapshotRepository) { - ArtifactRepositoryLayout layout = repositoryLayouts.get(distributionManagement.repository.layout); + ArtifactRepositoryLayout layout = repositoryLayouts.get(distributionManagement.snapshotRepository.layout); MavenArtifactRepository repo = new MavenArtifactRepository( distributionManagement.snapshotRepository.id, getSnapshotDistributionManagementRepositoryUrl(project), layout, getArtifactRepositoryPolicy(distributionManagement.snapshotRepository.snapshots), getArtifactRepositoryPolicy(distributionManagement.snapshotRepository.releases)) - project.setReleaseArtifactRepository(repo) + project.setSnapshotArtifactRepository(repo) } } From 5d5b627a6701bc239c7049691deeb3f1b9ebaffc Mon Sep 17 00:00:00 2001 From: Mark Derricutt Date: Thu, 9 Nov 2023 15:35:34 +1300 Subject: [PATCH 3/4] Updated minor dependencies. Change-Id: I41bf3c0b8438b1b13f415c9813b0cf6d5956b490 --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index bc3b707..805c17b 100644 --- a/pom.xml +++ b/pom.xml @@ -101,13 +101,13 @@ org.slf4j slf4j-api - 2.0.7 + 2.0.9 provided org.slf4j slf4j-simple - 2.0.7 + 2.0.9 test @@ -119,7 +119,7 @@ org.apache.maven.plugin-tools maven-plugin-annotations - 3.9.0 + 3.10.2 provided From 9f3b67e113d733b2c75bf273ac4ba6ba903c31f5 Mon Sep 17 00:00:00 2001 From: Mark Derricutt Date: Thu, 9 Nov 2023 16:03:16 +1300 Subject: [PATCH 4/4] Updated Maven 4 workflow to alpha-8 Change-Id: I916bc19d9b1afddde105ee99fef6e497502ef18f --- .github/workflows/java8_m4.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/java8_m4.yml b/.github/workflows/java8_m4.yml index 536c287..8144eae 100644 --- a/.github/workflows/java8_m4.yml +++ b/.github/workflows/java8_m4.yml @@ -1,4 +1,4 @@ -name: Integration Tests on Java 8 and Maven 4.0.0-alpha-7 +name: Integration Tests on Java 8 and Maven 4.0.0-alpha-8 on: push: @@ -19,7 +19,7 @@ jobs: java-version: 8 - name: Switch To Maven 4 run: | - echo "distributionUrl=https://dlcdn.apache.org/maven/maven-4/4.0.0-alpha-7/binaries/apache-maven-4.0.0-alpha-7-bin.zip" > .mvn/wrapper/maven-wrapper.properties + echo "distributionUrl=https://dlcdn.apache.org/maven/maven-4/4.0.0-alpha-8/binaries/apache-maven-4.0.0-alpha-8-bin.zip" > .mvn/wrapper/maven-wrapper.properties echo "wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" >> .mvn/wrapper/maven-wrapper.properties - name: Build with Maven run: ./mvnw --batch-mode --update-snapshots install -Prun-its