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());

Reply via email to