grpc/grpc-java

bazel: Support java_export by adding maven_coordinates to targets

Aperta

#9965 aperta il 20 mar 2023

 (4 commenti) (0 reazioni) (0 assegnatari)Java (3742 fork)batch import
help wanted

Metriche repository

Star
 (11.124 stelle)
Metriche merge PR
 (Merge medio 23g 22h) (43 PR mergiate in 30 g)

Descrizione

What version of gRPC-Java are you using?

1.50.2

What is your environment?

OSX

What did you expect to see?

The pom file generated from a java_export when using GRPC includes GRPC dependencies rather than inlining them into the generate jar file.

What did you see instead?

The pom file does NOT include a grpc dependency. The generate jar includes directly grpc classes. For example: io/grpc/Attributes.java, io/grpc/util/AdvancedTlsX509KeyManager.java, io/grpc/stub/AbstractAsyncStub.java

Steps to reproduce the bug

  1. Create a java bazel project following the canonical example
  2. Add a java_export rule, see below.
  3. Run the publish rule: bazel run --define "maven_repo=file://$HOME/.m2/repository" //export_test:export_test.publish
  4. Examine the resulting pom file and artifact
  • jar tf ~/.m2/repository/com/example/exporttest/0.0.1/exporttest-0.0.1-sources.jar|less
  • less ~/m2/repository/com/example/exporttest/0.0.1/exporttest-0.0.1.pom
  1. Observe that protobuf and grpc dependencies are omitted from the pom file
  2. Observe that protobuf and grpc classes are in the jar file
java_export(
    name = "export_test",
    maven_coordinates = "com.example:exporttest:0.0.1",
    runtime_deps = [
        "//export_test_lib",
        "@maven//:com_google_protobuf_protobuf_java",
        "@maven//:com_google_protobuf_protobuf_java_util",
        "@maven//:io_grpc_grpc_api",
        "@maven//:io_grpc_grpc_core",
        "@maven//:io_grpc_grpc_protobuf",
        "@maven//:io_grpc_grpc_stub",
    ],
)

Workaround

Simply removing IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS, added here, seems to work fine.

Alternatively, perhaps someone could set the maven_coordinates tags so that java_export knows which artifacts to reference!

Guida contributor