Fix MavenPublisher to support POM-only publications (#1574)
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 85b593e..6500fc3 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
@@ -176,15 +176,17 @@
     List<CompletableFuture<Void>> futures = new ArrayList<>();
     futures.add(upload(repo, credentials, coords, ".pom", pom, signingMetadata, executor));
 
-    futures.add(
-        upload(
-            repo,
-            credentials,
-            coords,
-            "." + getFileExtension(mainArtifactPath),
-            Paths.get(mainArtifactPath),
-            signingMetadata,
-            executor));
+    if (!mainArtifactPath.isEmpty()) {
+      futures.add(
+          upload(
+              repo,
+              credentials,
+              coords,
+              "." + getFileExtension(mainArtifactPath),
+              Paths.get(mainArtifactPath),
+              signingMetadata,
+              executor));
+    }
 
     if (!Strings.isNullOrEmpty(extraArtifacts)) {
       List<String> extraArtifactTuples = Splitter.onPattern(",").splitToList(extraArtifacts);
diff --git a/tests/com/github/bazelbuild/rules_jvm_external/maven/MavenPublisherTest.java b/tests/com/github/bazelbuild/rules_jvm_external/maven/MavenPublisherTest.java
index 8c354a3..478bc27 100644
--- a/tests/com/github/bazelbuild/rules_jvm_external/maven/MavenPublisherTest.java
+++ b/tests/com/github/bazelbuild/rules_jvm_external/maven/MavenPublisherTest.java
@@ -46,6 +46,30 @@
   }
 
   @Test
+  public void testPublishLocalPomOnly() throws Exception {
+    File pom = File.createTempFile("pom", ".xml");
+    final Path root = Paths.get(System.getenv("TEST_TMPDIR"));
+
+    ExecutorService executor = Executors.newSingleThreadExecutor();
+    MavenPublisher.run(
+        "com.example:example-bom:1.0.0",
+        pom.getAbsolutePath(),
+        "",
+        true,
+        null,
+        root.toUri().toString(),
+        null,
+        SigningMetadata.noSigner(),
+        executor);
+    executor.shutdown();
+
+    Path repoRoot = root.resolve("com/example/example-bom/1.0.0");
+    assertTrue(Files.exists(repoRoot.resolve("example-bom-1.0.0.pom")));
+    assertTrue(Files.exists(repoRoot.resolve("example-bom-1.0.0.pom.md5")));
+    assertTrue(Files.exists(repoRoot.resolve("example-bom-1.0.0.pom.sha1")));
+  }
+
+  @Test
   public void testPublishHttp() throws Exception {
     final Path root = Paths.get(System.getenv("TEST_TMPDIR"));
     HttpServer server = HttpServer.create(new InetSocketAddress(0), 0);