From 21e6c11cf1456b2968b04a5c322d94eb33b4e543 Mon Sep 17 00:00:00 2001 From: Titus Fortner Date: Mon, 18 May 2026 20:59:04 -0500 Subject: [PATCH] Fix MavenPublisher to support POM-only publications --- .../maven/MavenPublisher.java | 20 +++++++++------- .../maven/MavenPublisherTest.java | 24 +++++++++++++++++++ 2 files changed, 35 insertions(+), 9 deletions(-) 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 85b593e02..6500fc3ba 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 @@ protected static void run( List> 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 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 8c354a37b..478bc2782 100644 --- a/tests/com/github/bazelbuild/rules_jvm_external/maven/MavenPublisherTest.java +++ b/tests/com/github/bazelbuild/rules_jvm_external/maven/MavenPublisherTest.java @@ -45,6 +45,30 @@ public void testPublishLocal() throws Exception { assertTrue(Files.exists(repoRoot.resolve("example-1.0.0.jar.sha1"))); } + @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"));