From 1e0b8c4232a7e2b430c7cf93336ef8f70d94d5ad Mon Sep 17 00:00:00 2001 From: Matt Harriger Date: Mon, 28 Jul 2025 12:02:24 -0500 Subject: [PATCH 1/5] Add support for per-module versions --- .../pl/project13/maven/git/GitCommitIdMojo.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java b/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java index ce58650a..c83b3160 100644 --- a/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java +++ b/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java @@ -284,6 +284,14 @@ public class GitCommitIdMojo extends AbstractMojo { @Parameter(defaultValue = "${project.basedir}/.git") File dotGitDirectory; + /** + * Configuration to tell the git-commit-id-maven-plugin to consider only + * commits affecting the folder containing this module, rather than all + * commits in the repository. + */ + @Parameter(defaultValue = "false") + boolean enablePerModuleVersions; + /** * Configuration for the {@code 'git-describe'} command. You can modify the dirty marker, abbrev * length and other options here. The following `gitDescribe` configuration below is optional and @@ -1325,6 +1333,11 @@ public boolean getUseBranchNameFromBuildEnvironment() { return useBranchNameFromBuildEnvironment; } + @Override + public boolean getPerModuleVersions() { + return enablePerModuleVersions; + } + @Override public boolean isOffline() { return offline || settings.isOffline(); @@ -1404,6 +1417,10 @@ public boolean shouldPropertiesEscapeUnicode() { public boolean shouldFailOnNoGitDirectory() { return failOnNoGitDirectory; } + @Override + public File getModuleBaseDir() { + return new File(project.getBasedir().getAbsolutePath()); + } }; GitCommitIdPlugin.runPlugin(cb, properties); From e259b8872bc9b683e5c9274bb5b81b6c4e2a6ce4 Mon Sep 17 00:00:00 2001 From: Matt Harriger Date: Mon, 28 Jul 2025 12:07:40 -0500 Subject: [PATCH 2/5] Add blank line to fix checkstyle violation --- src/main/java/pl/project13/maven/git/GitCommitIdMojo.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java b/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java index c83b3160..3b8fb414 100644 --- a/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java +++ b/src/main/java/pl/project13/maven/git/GitCommitIdMojo.java @@ -1417,6 +1417,7 @@ public boolean shouldPropertiesEscapeUnicode() { public boolean shouldFailOnNoGitDirectory() { return failOnNoGitDirectory; } + @Override public File getModuleBaseDir() { return new File(project.getBasedir().getAbsolutePath()); From 52ed776cdae491497a51cced0a7e4ff5738e45ae Mon Sep 17 00:00:00 2001 From: Matt Harriger Date: Mon, 28 Jul 2025 12:26:33 -0500 Subject: [PATCH 3/5] Update git-commit-id-plugin-core dep --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 78b44e67..94d470c6 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ ${project.groupId} git-commit-id-plugin-core - 6.0.0 + 6.0.1-SNAPSHOT com.google.code.findbugs From 3ac4bf74803919058577b1eb4cd5830d7b5bd7cc Mon Sep 17 00:00:00 2001 From: Matt Harriger Date: Mon, 28 Jul 2025 17:03:51 -0500 Subject: [PATCH 4/5] Added integration test for perModuleVersions --- .../git/GitCommitIdMojoIntegrationTest.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java b/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java index 4adecf35..21d5e960 100644 --- a/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java +++ b/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java @@ -39,6 +39,7 @@ import org.codehaus.plexus.util.FileUtils; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.ResetCommand; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -1716,6 +1717,49 @@ public void shouldGeneratePropertiesWithMultiplePrefixesAndReactorProject(boolea } } + @Test + public void shouldGiveCommitIdForEachFolderWhenPerModuleVersionsEnabled() + throws Exception { + // given + mavenSandbox + .withParentProject("parent-project", "pom") + .withChildProject("src/test", "jar") + .withGitRepoInParent(AvailableGitTestRepo.GIT_COMMIT_ID) + .withKeepSandboxWhenFinishedTest(true) + .create(); + + // Only supported with JGit + mojo.useNativeGit = false; + + // Don't skip the parent project + mojo.skipPoms = false; + + //Enable per module versions + mojo.enablePerModuleVersions = true; + + MavenProject parentProject = mavenSandbox.getParentProject(); // "my-pom-project" + MavenProject childProject = mavenSandbox.getChildProject(); // "my-child-module" + + // when + // Execute the mojo in both parent and child projects + setProjectToExecuteMojoIn(parentProject); + mojo.execute(); + + setProjectToExecuteMojoIn(childProject); + mojo.execute(); + + // then + // The commit IDs should be different for parent and child projects + Properties parentProperties = parentProject.getProperties(); + Properties childProperties = childProject.getProperties(); + + assertThat(parentProperties).containsKey("git.commit.id.abbrev"); + assertThat(childProperties).containsKey("git.commit.id.abbrev"); + assertThat(parentProperties.getProperty("git.commit.id.abbrev")).isNotEqualTo(childProperties.getProperty("git.commit.id.abbrev")); + + } + + private GitDescribeConfig createGitDescribeConfig(boolean forceLongFormat, int abbrev) { GitDescribeConfig gitDescribeConfig = new GitDescribeConfig(); gitDescribeConfig.setTags(true); From 37946ca2c4bd94a5a25fe16273a3322b6163b953 Mon Sep 17 00:00:00 2001 From: Matt Harriger Date: Mon, 28 Jul 2025 17:08:15 -0500 Subject: [PATCH 5/5] Fix checkstyle error --- .../pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java b/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java index 21d5e960..a5d016eb 100644 --- a/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java +++ b/src/test/java/pl/project13/maven/git/GitCommitIdMojoIntegrationTest.java @@ -1756,8 +1756,7 @@ public void shouldGiveCommitIdForEachFolderWhenPerModuleVersionsEnabled() assertThat(parentProperties).containsKey("git.commit.id.abbrev"); assertThat(childProperties).containsKey("git.commit.id.abbrev"); assertThat(parentProperties.getProperty("git.commit.id.abbrev")).isNotEqualTo(childProperties.getProperty("git.commit.id.abbrev")); - - } + } private GitDescribeConfig createGitDescribeConfig(boolean forceLongFormat, int abbrev) {