Skip to content

Bazel Support #27

@notpeter

Description

@notpeter

I think it would be possible to support bazel with jdtls, just as salesforce/bazel-vscode-java provides jars via contributes.javaExtensions to redhat-developer/vscode-java which get injected into the jdtls initializationOptions.bundles

The salesforce/bazel-vscode-java extension downloads p2-repository.zip which it then extracts, does some renaming and puts them under ~/.vscode/extensions/sfdc.bazel-vscode-java-1.4.0/server. And since salesforce/bazel-vscode-java exports a list of those jars via contributes.javaExtensions in it's package.json those settings are available to other extensions.
Source: salesforce/bazel-vscode-java:gulpfile.js and salesforce/bazel-vscode-java:package.json

When redhat-developer/vscode-java starts the language server it pulls from contributes.javaExtensions and provides those as a bundles array under the initializationOptions when starting jdtls:
Source: redhat-developer/vscode-java:src/extension.ts

I think the Zed Java Extension could potentially add support for Bazel with the following settings:

{
  "lsp": {
    "jdtls": {
      "initialization_options": {
        "bundles": [
          "somepath/org.eclipse.equinox.event.jar",
          "somepath/com.github.ben-manes.caffeine.jar",
          "somepath/org.jsr-305.jar",
          "somepath/org.fusesource.jansi.jar",
          "somepath/com.google.protobuf.jar",
          "somepath/com.salesforce.bazel.importedsource.jar",
          "somepath/com.salesforce.bazel.sdk.jar",
          "somepath/com.salesforce.bazel.eclipse.core.jar",
          "somepath/com.salesforce.bazel.eclipse.jdtls.jar"
        ]
      }
    }
  }
}

Totally untested but I wanted to document my research somewhere.

Not sure whether the current Extension APIs are sufficient to support downloading arbitrary zip files, extracting a subset of them and then injecting the correct pathing for where those files are. But assuming this works, we could certainly provide instructions doing this manually.

I'm not a Java programmer.
I have no experience with Bazel.
Would love if someone can see if they can get this working.

See also:

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions