You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2026/07/18 17:26:15 UTC

(maven-build-cache-extension) 01/01: Bug: proper classifier handling

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 <ta...@cservenak.net>
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());