aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xsrc/test/shell/bazel/maven_skylark_test.sh24
-rwxr-xr-xsrc/test/shell/bazel/remote_helpers.sh3
-rw-r--r--tools/build_defs/repo/maven_rules.bzl17
3 files changed, 38 insertions, 6 deletions
diff --git a/src/test/shell/bazel/maven_skylark_test.sh b/src/test/shell/bazel/maven_skylark_test.sh
index 32538db45f..3b5a496505 100755
--- a/src/test/shell/bazel/maven_skylark_test.sh
+++ b/src/test/shell/bazel/maven_skylark_test.sh
@@ -102,6 +102,30 @@ EOF
expect_log "Tra-la!"
}
+function test_maven_jar_with_classifier_skylark() {
+ setup_zoo
+ version="1.21"
+ packaging = "jar"
+ classifier = "sources"
+ serve_artifact com.example.carnivore carnivore $version $packaging $classifier
+ setup_local_maven_settings_xml "http://localhost:$fileserver_port"
+
+ cat > WORKSPACE <<EOF
+load("@bazel_tools//tools/build_defs/repo:maven_rules.bzl", "maven_jar")
+maven_jar(
+ name = 'bar_sources',
+ artifact = "com.example.foo:bar:$version:jar:sources",
+ sha1 = '$sha1',
+ settings = '//:$local_maven_settings_xml',
+)
+
+bind(name = 'baz_sources', actual = '@bar_sources//jar')
+EOF
+
+ bazel run //zoo:ball-pit >& $TEST_log || fail "Expected run to succeed"
+ expect_log "Tra-la!"
+}
+
function setup_android_binary() {
mkdir -p java/com/app
cat > java/com/app/BUILD <<EOF
diff --git a/src/test/shell/bazel/remote_helpers.sh b/src/test/shell/bazel/remote_helpers.sh
index b4c4940fe8..ab8dbd5b6c 100755
--- a/src/test/shell/bazel/remote_helpers.sh
+++ b/src/test/shell/bazel/remote_helpers.sh
@@ -159,6 +159,9 @@ function create_artifact() {
local artifact_id=$2
local version=$3
local packaging=${4:-jar}
+ # TODO(davido): This is unused for now.
+ # Finalize the implementation once the underlying tests are fixed.
+ local classifier=${5:-jar}
if [ $packaging == "aar" ]; then
make_test_aar
local artifact=$test_aar
diff --git a/tools/build_defs/repo/maven_rules.bzl b/tools/build_defs/repo/maven_rules.bzl
index 90b1e3716f..9a15166df2 100644
--- a/tools/build_defs/repo/maven_rules.bzl
+++ b/tools/build_defs/repo/maven_rules.bzl
@@ -24,7 +24,10 @@
# 3) maven_dependency_plugin()
# This rule downloads the maven-dependency-plugin used internally
# for testing and the implementation for the fetching of artifacts.
-
+#
+# Maven coordinates are expected to be in this form:
+# groupId:artifactId:version[:packaging][:classifier]
+#
# Installation requirements prior to using this rule:
# 1) Maven binary: `mvn`
# 2) Maven plugin: `maven-dependency-plugin:2.10`
@@ -78,9 +81,9 @@ def _create_coordinates(fully_qualified_name, packaging="jar"):
# downloads the correct artifact.
fully_qualified_name = "%s:%s" % (fully_qualified_name, packaging)
elif len(parts) == 4:
- group_id, artifact_id, packaging, version = parts
+ group_id, artifact_id, version, packaging = parts
elif len(parts) == 5:
- group_id, artifact_id, packaging, classifier, version = parts
+ group_id, artifact_id, version, packaging, classifier = parts
else:
fail("Invalid fully qualified name for artifact: %s" % fully_qualified_name)
@@ -102,9 +105,11 @@ def _create_paths(ctx, coordinates):
"""Creates a struct that contains the paths to create the cache WORKSPACE"""
# e.g. guava-18.0.jar
- artifact_filename = "%s-%s.%s" % (coordinates.artifact_id,
- coordinates.version,
- coordinates.packaging)
+ artifact_filename = "%s-%s" % (coordinates.artifact_id,
+ coordinates.version)
+ if coordinates.classifier:
+ artifact_filename += "-" + coordinates.classifier
+ artifact_filename += "." + coordinates.packaging
sha1_filename = "%s.sha1" % artifact_filename
# e.g. com/google/guava/guava/18.0