diff --git a/tools/build/bazel/print_mvn_jar.bzl b/tools/build/bazel/print_mvn_jar.bzl
deleted file mode 100644
index 8e183c22..0000000
--- a/tools/build/bazel/print_mvn_jar.bzl
+++ /dev/null
@@ -1,14 +0,0 @@
-load("//tools/build/bazel:generate_workspace.bzl", "maven_coordinates")
-
-# Example invocation:
-# bazel build $(bazel query 'kind("_bnd rule", //...)') \
-#       --aspects tools/build/bazel/mvn_jar.bzl%print_mvn_jar 2>&1 | \
-#     egrep "DEBUG: .*mvn_jar.bzl" | cut -d\  -f3-
-
-def _impl(target, ctx):
-    [ print (maven_coordinates(target.label), f.path) for f in target.files ]
-    return []
-
-print_mvn_jar = aspect(
-    implementation = _impl,
-)
diff --git a/tools/build/bazel/publish_catalog.bzl b/tools/build/bazel/publish_catalog.bzl
new file mode 100644
index 0000000..9251aab
--- /dev/null
+++ b/tools/build/bazel/publish_catalog.bzl
@@ -0,0 +1,42 @@
+load("//tools/build/bazel:generate_workspace.bzl", "maven_coordinates")
+
+# Example invocation:
+# bazel build $(bazel query 'kind("_bnd rule", //...)') \
+#       --aspects tools/build/bazel/publish_catalog.bzl%publish_catalog 2>&1 | \
+#     egrep "DEBUG: .*mvn_jar.bzl" | cut -d\  -f3-
+
+def _remote(group_id, artifact_id, version, packaging, classifier):
+    p = group_id + "/" + artifact_id + "/" + version + "/" + artifact_id + "-" + version
+    if classifier != None:
+      p += "-" + classifier
+    p += "." + packaging
+    return p
+
+def _impl(target, ctx):
+    coords = maven_coordinates(target.label)
+    mvn = coords.split(":")
+    group_id = mvn[1]
+    artifact_id = mvn[2]
+    version = mvn[len(mvn) - 1]
+    packaging = "jar"
+    classifier = None
+
+    if len(mvn) > 4:
+        packaging = mvn[3]
+
+    c = artifact_id.split("-")
+
+    if len(c) > 1 and c[len(c)-1] in ("javadocs", "sources", "tests", "pom"):
+        classifier = c[len(c)-1]
+        artifact_id = "-".join(c[:len(c)-1])
+        if classifier == "pom":
+            packaging = classifier
+            classifier = None
+
+    for f in target.files:
+        print ("%s\t%s" % (f.path, _remote(group_id, artifact_id, version, packaging, classifier)))
+    return []
+
+publish_catalog = aspect(
+    implementation = _impl,
+)
