This is the set of Eclipse plugins for developing Bazel projects in Eclipse. Currently supports running in a language server mode only (through the Eclipse JDT LS).
- com.salesforce.b2eclipse.jdt.ls - the code which does all that Bazel-related stuff for building classpaths before they can be further processed by JDT.
- com.salesforce.b2eclipse.repository - here you can find the outcome of the build (packaged plugins).
- com.salesforce.b2eclipse.tests - integration tests for the jdt.ls plugin.
- com.salesforce.b2eclipse.ui - a plugin for the client (the one which is connected to the language server for code interactions). It's rather a simple connection provider to a language server, not a full-fledged UI plugin.
The following properties are passed from the client to configure the plugin:
java.import.bazel.enabled
- whether Bazel support should be enabled in JDT LS (disabled by default);java.import.bazel.src.path
- location of sources (relative to a package). Defaults to/src/main/java
;java.import.bazel.test.path
- location of test sources (relative to a package). Defaults to/src/test/java
.
- Root package is not allowed (i.e. there should be no BUILD file beside the WORKSPACE);
- A project has to be in a valid state (i.e. no unsatisfied dependencies are allowed);
- Each package is to have sources;
- Sources of a package are expected to be under the path specified through the following properties:
java.import.bazel.src.path
,java.import.bazel.test.path
(details in the Properties section). - Sources of a package cannot reside in the root of it. They should be in a subdir;
- Subpackages are not supported (i.e. package within package).
Will be shipped separately as two independent features: standalone feature and as extension for Eclipse JDT LS.
The following command will install Apache Maven if necessary, then build the server into the /com.salesforce.b2eclipse.repository/target/repository
folder:
$ ./mvnw clean verify
Note: currently, the build can only run when launched with JDK 8.
- Code completion
- Code navigation
This work is dual-licensed under EPL 2.0 and Apache License 2.0. See corresponding files: EPL2.0, Apache License 2.0.