Disable hash uploads for snapshot revisions (#1544)

diff --git a/private/tools/java/com/github/bazelbuild/rules_jvm_external/maven/MavenPublisher.java b/private/tools/java/com/github/bazelbuild/rules_jvm_external/maven/MavenPublisher.java
index 8016fd2..54d0f3d 100644
--- a/private/tools/java/com/github/bazelbuild/rules_jvm_external/maven/MavenPublisher.java
+++ b/private/tools/java/com/github/bazelbuild/rules_jvm_external/maven/MavenPublisher.java
@@ -333,24 +333,33 @@
             coords.version);
 
     byte[] toHash = Files.readAllBytes(item);
-    Path md5 = Files.createTempFile(item.getFileName().toString(), ".md5");
-    Files.write(md5, toMd5(toHash).getBytes(UTF_8));
 
-    Path sha1 = Files.createTempFile(item.getFileName().toString(), ".sha1");
-    Files.write(sha1, toSha1(toHash).getBytes(UTF_8));
-
-    Path sha256 = Files.createTempFile(item.getFileName().toString(), ".sha256");
-    Files.write(sha256, toSha256(toHash).getBytes(UTF_8));
-
-    Path sha512 = Files.createTempFile(item.getFileName().toString(), ".sha512");
-    Files.write(sha512, toSha512(toHash).getBytes(UTF_8));
+    // For SNAPSHOT versions, skip uploading separate checksum files
+    // Artifactory renames SNAPSHOT files with timestamps, causing checksum uploads to fail
+    // Most Maven repositories (Artifactory, Nexus, etc.) automatically calculate checksums
+    boolean isSnapshot = coords.version.contains("SNAPSHOT");
 
     List<CompletableFuture<?>> uploads = new ArrayList<>();
     uploads.add(upload(String.format("%s%s", base, append), credentials, item, executor));
-    uploads.add(upload(String.format("%s%s.md5", base, append), credentials, md5, executor));
-    uploads.add(upload(String.format("%s%s.sha1", base, append), credentials, sha1, executor));
-    uploads.add(upload(String.format("%s%s.sha256", base, append), credentials, sha256, executor));
-    uploads.add(upload(String.format("%s%s.sha512", base, append), credentials, sha512, executor));
+
+    if (!isSnapshot) {
+      Path md5 = Files.createTempFile(item.getFileName().toString(), ".md5");
+      Files.write(md5, toMd5(toHash).getBytes(UTF_8));
+
+      Path sha1 = Files.createTempFile(item.getFileName().toString(), ".sha1");
+      Files.write(sha1, toSha1(toHash).getBytes(UTF_8));
+
+      Path sha256 = Files.createTempFile(item.getFileName().toString(), ".sha256");
+      Files.write(sha256, toSha256(toHash).getBytes(UTF_8));
+
+      Path sha512 = Files.createTempFile(item.getFileName().toString(), ".sha512");
+      Files.write(sha512, toSha512(toHash).getBytes(UTF_8));
+
+      uploads.add(upload(String.format("%s%s.md5", base, append), credentials, md5, executor));
+      uploads.add(upload(String.format("%s%s.sha1", base, append), credentials, sha1, executor));
+      uploads.add(upload(String.format("%s%s.sha256", base, append), credentials, sha256, executor));
+      uploads.add(upload(String.format("%s%s.sha512", base, append), credentials, sha512, executor));
+    }
 
     MavenSigning.SigningMethod signingMethod = signingMetadata.signingMethod;
     if (signingMethod.equals(MavenSigning.SigningMethod.GPG)) {