You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by lh...@apache.org on 2024/10/16 05:09:15 UTC
(pulsar-site) 01/03: Add IDE instructions for VS Code
This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pulsar-site.git
commit f9edf2d3bd807f99db5f54f592a3f1ad9b6b2d4b
Author: Lari Hotari <lh...@users.noreply.github.com>
AuthorDate: Wed Oct 16 08:00:41 2024 +0300
Add IDE instructions for VS Code
---
contribute/setup-ide.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/contribute/setup-ide.md b/contribute/setup-ide.md
index c37a0f91d763..acdf2dd2222c 100644
--- a/contribute/setup-ide.md
+++ b/contribute/setup-ide.md
@@ -86,6 +86,52 @@ Some configuration in the Maven build is conditional based on the JDK version. I
1. Verify Maven is using a supported version. Currently, the supported version of Maven is specified in the `<requireMavenVersion>` section of the root `pom.xml` file.
2. Try "restart and clear caches" in IntelliJ and repeat the above steps to reload projects and generate sources.
+## Visual Studio Code (VS Code)
+
+Before starting, make sure you have installed the [Java Extension Pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack) in VS Code.
+
+Since multiple versions of Java are used for Pulsar development, it is recommended to use [SDKMAN](https://sdkman.io/installation) to manage different versions of Java. The separate guide [how to setup build tools](setup-buildtools.md) explains how to install Java 17 and 21 using SDKMAN.
+
+Once you have installed the Java versions using SDKMAN, you can add (or modify) the following settings to your VS Code User level `settings.json` file. Please check [VS Code documentation](https://code.visualstudio.com/docs/getstarted/settings) for more details. The simplest way to open the settings file is to run the `Preferences: Open Settings (JSON)` command from the Command Palette (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac).
+
+```json
+{
+ "java.jdt.ls.vmargs": "-Xmx6g -XX:+UseZGC -XX:+ZGenerational -Dsun.zip.disableMemoryMapping=true",
+ "java.jdt.ls.java.home": "~/.sdkman/candidates/java/21",
+ "java.configuration.runtimes": [
+ {
+ "name": "JavaSE-21",
+ "path": "~/.sdkman/candidates/java/21",
+ "default": true
+ },
+ {
+ "name": "JavaSE-17",
+ "path": "~/.sdkman/candidates/java/17"
+ }
+ ],
+ "java.autobuild.enabled": false,
+ "java.debug.settings.onBuildFailureProceed": true,
+ "java.compile.nullAnalysis.mode": "disabled",
+ "java.configuration.updateBuildConfiguration": "interactive"
+}
+```
+
+If the `java.jdt.ls.java.home` setting doesn't point to a Java 21 JDK, you must remove `-XX:+ZGenerational` from `java.jdt.ls.vmargs` setting since Java 21 is the first version that supports generational ZGC.
+
+The `java.autobuild.enabled` setting is set to `false` since building the Pulsar project in VS Code takes very long time.
+
+The `java.debug.settings.onBuildFailureProceed` is set to `true` so that tests can be run even when there are individual build failures.
+
+Before running tests, you need to build the project manually at least once using the following command:
+
+```shell
+mvn -Pcore-modules,-main -T 1C clean install -DskipTests -Dspotbugs.skip=true -Dcheckstyle.skip=true -Dlicense.skip=true -DnarPluginPhase=none
+```
+
+This will make the protobuf / lightproto generated classes available to the tests run in the IDE. Without this there will be errors at runtime about missing classes or Mockito related errors.
+
+For troubleshooting, please check [Language support for Java extension documentation](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting). Adding `"java.transport": "stdio"` to the settings can help display errors in the error log if the problem is related to the language server.
+
## Eclipse
Follow [these instructions](https://howtodoinjava.com/automation/lombok-eclipse-installation-examples/) to configure your Eclipse setup.