This is an automated email from the ASF dual-hosted git repository. cstamas pushed a commit to branch proper-classifier-handling in repository https://gitbox.apache.org/repos/asf/maven-build-cache-extension.git
commit 19f14c4f7b012a116d7b552b613bd5ed2812b8aa Author: Tamas Cservenak <[email protected]> AuthorDate: Sat Jul 18 19:25:48 2026 +0200 Bug: proper classifier handling Replace the hack, and implement proper classifier handling. --- .../maven/buildcache/checksum/MavenProjectInput.java | 15 ++++++--------- .../checksum/MavenProjectInputSnapshotResolutionTest.java | 5 +++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java b/src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java index e7a7a8d..04e19c4 100644 --- a/src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java +++ b/src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java @@ -838,15 +838,12 @@ private DigestItem resolveArtifact(final Dependency dependency) return DtoUtils.createDigestedFile(artifact, hash); } - // Handle special dependency types that have implicit classifiers - String classifier = dependency.getClassifier(); - String extension = null; - - // test-jar type requires "tests" classifier and "jar" extension - if ("test-jar".equals(dependency.getType()) && (classifier == null || classifier.isEmpty())) { - classifier = "tests"; - extension = "jar"; - } + ArtifactHandler handler = artifactHandlerManager.getArtifactHandler(dependency.getType()); + String classifier = dependency.getClassifier() == null + || dependency.getClassifier().trim().isEmpty() + ? handler.getClassifier() + : dependency.getClassifier(); + String extension = handler.getExtension(); org.eclipse.aether.artifact.Artifact dependencyArtifact = new org.eclipse.aether.artifact.DefaultArtifact( dependency.getGroupId(), diff --git a/src/test/java/org/apache/maven/buildcache/checksum/MavenProjectInputSnapshotResolutionTest.java b/src/test/java/org/apache/maven/buildcache/checksum/MavenProjectInputSnapshotResolutionTest.java index b10d3a8..a688f5f 100644 --- a/src/test/java/org/apache/maven/buildcache/checksum/MavenProjectInputSnapshotResolutionTest.java +++ b/src/test/java/org/apache/maven/buildcache/checksum/MavenProjectInputSnapshotResolutionTest.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Properties; +import org.apache.maven.artifact.handler.DefaultArtifactHandler; import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; import org.apache.maven.buildcache.MultiModuleSupport; import org.apache.maven.buildcache.NormalizedModelProvider; @@ -52,6 +53,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -103,6 +105,9 @@ class MavenProjectInputSnapshotResolutionTest { @BeforeEach void setUp() { + // artifact handler MUST return something + when(artifactHandlerManager.getArtifactHandler(anyString())).thenReturn(new DefaultArtifactHandler("jar")); + // Setup basic mocks that MavenProjectInput constructor needs when(session.getRepositorySession()).thenReturn(repositorySystemSession); when(project.getBasedir()).thenReturn(tempDir.toFile());
