diff options
-rwxr-xr-x | src/test/shell/bazel/maven_skylark_test.sh | 24 | ||||
-rwxr-xr-x | src/test/shell/bazel/remote_helpers.sh | 3 | ||||
-rw-r--r-- | tools/build_defs/repo/maven_rules.bzl | 17 |
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 |