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