{ "name": "vscode-spring-boot", "displayName": "Spring Boot Tools", "description": "Provides validation and content assist for Spring Boot `application.properties`, `application.yml` properties files. As well as Boot-specific support for `.java` files.", "icon": "spring-boot-logo.png", "version": "1.51.0", "publisher": "vmware", "repository": { "type": "git", "url": "https://github.com/spring-projects/sts4.git" }, "license": "EPL-1.0", "engines": { "npm": ">=6.0.0", "vscode": "^1.67.0" }, "categories": [ "Programming Languages", "Linters" ], "keywords": [ "java-properties", "spring-boot", "java", "application-properties", "application-yaml" ], "activationEvents": [ "onCommand:vscode-spring-boot.rewrite.list.refactorings", "onCommand:vscode-spring-boot.rewrite.list.boot-upgrades", "onCommand:vscode-spring-boot.ls.start" ], "contributes": { "javaExtensions": [ "./jars/io.projectreactor.reactor-core.jar", "./jars/org.reactivestreams.reactive-streams.jar", "./jars/jdt-ls-commons.jar", "./jars/jdt-ls-extension.jar" ], "languages": [ { "id": "spring-boot-properties-yaml", "aliases": [ "Spring Boot Properties Yaml" ], "filenamePatterns": [ "application*.yml", "application*.yaml", "bootstrap*.yml", "bootstrap*.yaml" ], "configuration": "./yaml-support/language-configuration.json" }, { "id": "spring-boot-properties", "aliases": [ "Spring Boot Properties" ], "filenamePatterns": [ "application*.properties", "bootstrap*.properties" ], "configuration": "./properties-support/language-configuration.json" }, { "id": "spring-factories", "aliases": [ "Spring Factories" ], "filenamePatterns": [ "*.factories" ], "configuration": "./properties-support/language-configuration.json" } ], "menus": { "editor/context": [ { "when": "resourceFilename == pom.xml || resourceFilename == build.gradle", "command": "vscode-spring-boot.rewrite.list.refactorings", "group": "SpringBoot" }, { "when": "resourceFilename == pom.xml || resourceFilename == build.gradle", "command": "vscode-spring-boot.rewrite.list.boot-upgrades", "group": "SpringBoot" } ], "explorer/context": [ { "when": "(resourceFilename == pom.xml || resourceFilename == build.gradle) && config.boot-java.rewrite.refactorings.on == true", "command": "vscode-spring-boot.rewrite.list.refactorings", "group": "SpringBoot" }, { "when": "(resourceFilename == pom.xml || resourceFilename == build.gradle) && config.boot-java.rewrite.refactorings.on == true", "command": "vscode-spring-boot.rewrite.list.boot-upgrades", "group": "SpringBoot" } ] }, "commands": [ { "command": "vscode-spring-boot.live-hover.connect", "title": "Manage Live Spring Boot Process Connections", "category": "Spring Boot" }, { "enablement": "config.boot-java.rewrite.refactorings.on == true", "command": "vscode-spring-boot.rewrite.list.boot-upgrades", "category": "Spring Boot", "title": "Upgrade Spring Boot Version..." }, { "enablement": "config.boot-java.rewrite.refactorings.on == true", "command": "vscode-spring-boot.rewrite.list.refactorings", "category": "Spring Boot", "title": "Refactor Spring Boot Project..." }, { "command": "vscode-spring-boot.rewrite.reload", "title": "Reload OpenRewrite Recipes, Code Actions, Problem and Quick Fix Descriptors", "category": "Spring Boot" }, { "command": "sts/common-properties/reload", "title": "Reload Shared Properties Metadata", "category": "Spring Boot" }, { "command": "vscode-spring-boot.spring.modulith.metadata.refresh", "title": "Refresh Modulith Metadata", "category": "Spring Boot" } ], "configuration": [ { "id": "features", "title": "Features", "order": 100, "properties": { "boot-java.validation.java.reconcilers": { "type": "boolean", "default": true, "description": "Reconciling Java Sources" }, "boot-java.live-information.automatic-connection.on": { "type": "boolean", "default": true, "description": "Live Information - Automatic addition of JVM arguments enabling JMX and Process Connection via JMX Enabled" }, "boot-java.live-information.fetch-data.max-retries": { "type": "number", "default": 10, "description": "Live Information - Max number of retries (before giving up)" }, "boot-java.live-information.fetch-data.retry-delay-in-seconds": { "type": "number", "default": 3, "description": "Live Information - Delay between retries in seconds" }, "boot-java.scan-java-test-sources.on": { "type": "boolean", "default": false, "description": "Enable/Disable Java test sources files scanning" }, "boot-java.support-spring-xml-config.on": { "type": "boolean", "default": false, "description": "Enable/Disable Support for Spring XML Config files" }, "boot-java.support-spring-xml-config.hyperlinks": { "type": "boolean", "description": "Enable/Disable Hyperlinks in Spring XML Config file editor", "default": true }, "boot-java.support-spring-xml-config.content-assist": { "type": "boolean", "description": "Enable/Disable Content Assist in Spring XML Config file editor", "default": true }, "boot-java.support-spring-xml-config.scan-folders": { "type": "string", "default": "src/main", "description": "Scan Spring XML in folders" }, "boot-java.highlight-codelens.on": { "type": "boolean", "default": true, "description": "Enable/Disable Spring running Boot application Code Lenses" }, "boot-java.common.properties-metadata": { "type": [ "string", "null" ], "description": "The path to a shared properties metadata JSON file." }, "boot-java.change-detection.on": { "type": "boolean", "default": false, "description": "Enable/Disable detecting changes of running Spring Boot applications" }, "boot-java.remote-apps": { "type": "array", "items": { "type": "object", "properties": { "jmxurl": { "type": "string" }, "host": { "type": "string" }, "urlScheme": { "type": "string" }, "port": { "type": "number" } }, "required": [ "jmxurl", "host" ] }, "description": "Array of jmx urls pointing to remote spring boot applications to poll for live hover information. A typical url looks something like this: `service:jmx:rmi://localhost:9111/jndi/rmi://localhost:9111/jmxrmi`" } } }, { "id": "rewrite", "title": "OpenRewrite", "order": 400, "properties": { "boot-java.rewrite.refactorings.on": { "type": "boolean", "default": true, "description": "Recipes refactoring entire Maven project via commands" }, "boot-java.rewrite.recipe-filters": { "type": "array", "default": [ "org.openrewrite.java.spring.boot2.SpringBoot2JUnit4to5Migration", "org.openrewrite.java.spring.boot2.SpringBoot2BestPractices", "org.openrewrite.java.spring.boot2.SpringBoot1To2Migration", "org.openrewrite.java.testing.junit5.JUnit5BestPractices", "org.openrewrite.java.testing.junit5.JUnit4to5Migration", "org.openrewrite.java.spring.boot2.UpgradeSpringBoot_2_7", "org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_1", "org.rewrite.java.security.*", "org.springframework.rewrite.test.*", "rewrite.test.*" ], "items": { "type": "string" }, "description": "Recipe ID filter patterns. Either exact ids or patterns with '*' as the wild-card" }, "boot-java.rewrite.scan-files": { "type": "array", "default": [], "items": { "type": "string" }, "description": "JAR and YAML files to scan for recipes, code actions, problem and quick fix descriptors" } } }, { "id": "ls", "title": "Language Server", "order": 1000, "properties": { "spring-boot.ls.logfile": { "type": [ "string", "null" ], "description": "The path of a file to write language server logs. If not set or null, then logs are discarded." }, "spring-boot.ls.java.home": { "type": [ "string", "null" ], "description": "Override JAVA_HOME used for launching the spring-boot-language-server JVM process.", "scope": "machine-overridable" }, "spring-boot.ls.java.heap": { "type": [ "string", "null" ], "description": "Max JVM heap value, passed via -Xmx argument when launching spring-boot-language-server JVM process." }, "spring-boot.ls.java.vmargs": { "type": "array", "items": { "type": "string" }, "description": "Additional 'user defined' VM args to pass to the language server process.", "scope": "machine-overridable" }, "spring-boot.ls.checkJVM": { "type": "boolean", "default": true, "description": "Enable/Disable Java VM validation" } } }, { "id": "boot2", "title": "Boot 2.x Best Practices & Optimizations", "order": 401, "properties": { "boot-java.validation.java.boot2": { "type": "string", "default": "AUTO", "description": "Enablement", "enum": [ "AUTO", "OFF", "ON" ] }, "spring-boot.ls.problem.boot2.JAVA_AUTOWIRED_CONSTRUCTOR": { "type": "string", "default": "WARNING", "description": "Unnecessary `@Autowired` over the only constructor", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot2.JAVA_PUBLIC_BEAN_METHOD": { "type": "string", "default": "HINT", "description": "Public modifier on `@Bean` method. They no longer have to be public visibility to be usable by Spring.", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot2.JAVA_TEST_SPRING_EXTENSION": { "type": "string", "default": "WARNING", "description": "`@SpringBootTest` and all test slice annotations already applies `@SpringExtension` as of Spring Boot 2.1.0.", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot2.JAVA_CONSTRUCTOR_PARAMETER_INJECTION": { "type": "string", "default": "IGNORE", "description": "Use constructor parameter injection", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot2.JAVA_PRECISE_REQUEST_MAPPING": { "type": "string", "default": "HINT", "description": "Use precise mapping annotation, i.e. '@GetMapping', '@PostMapping', etc.", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot2.JAVA_REPOSITORY": { "type": "string", "default": "WARNING", "description": "Unnecessary `@Repository`", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot2.JAVA_LAMBDA_DSL": { "type": "string", "default": "INFO", "description": "Consider switching to Lambda DSL syntax", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot2.MISSING_CONFIGURATION_ANNOTATION": { "type": "string", "default": "WARNING", "description": "Class likely missing '@Configuration' annotation, i.e. has Bean methods but no '@Configuration' annotation", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot2.HTTP_SECURITY_AUTHORIZE_HTTP_REQUESTS": { "type": "string", "default": "WARNING", "description": "'HttpSecurity.authroizeRequests(...)' API and related classes are to be deprecated use new `authorizeHttpRequests(...) and related classes", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot2.WEB_SECURITY_CONFIGURER_ADAPTER": { "type": "string", "default": "WARNING", "description": "'WebSecurityConfigurerAdapter' is removed in Spring-Security 6.x. Refactor classes extending the 'WebSecurityConfigurerAdapter' into 'Configuration' beans and methods into 'Bean' definitions ", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot2.DOMAIN_ID_FOR_REPOSITORY": { "type": "string", "default": "ERROR", "description": "Invalid Domain ID type for Spring Data Repository", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] } } }, { "id": "boot3", "title": "Boot 3.x Best Practices & Optimizations", "order": 402, "properties": { "boot-java.validation.java.boot3": { "type": "string", "default": "AUTO", "description": "Enablement", "enum": [ "AUTO", "OFF", "ON" ] }, "spring-boot.ls.problem.boot3.JAVA_TYPE_NOT_SUPPORTED": { "type": "string", "default": "ERROR", "description": "Type no supported as of Spring Boot 3", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot3.FACTORIES_KEY_NOT_SUPPORTED": { "type": "string", "default": "ERROR", "description": "Spring factories key not supported", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.boot3.MODULITH_TYPE_REF_VIOLATION": { "type": "string", "default": "ERROR", "description": "Modulith restricted type reference", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] } } }, { "id": "spring-aot", "title": "AOT Optimizations", "order": 403, "properties": { "boot-java.validation.java.spring-aot": { "type": "string", "default": "OFF", "description": "Enablement", "enum": [ "OFF", "ON" ] }, "spring-boot.ls.problem.spring-aot.JAVA_CONCRETE_BEAN_TYPE": { "type": "string", "default": "WARNING", "description": "Bean definition should have precise type", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.spring-aot.JAVA_BEAN_POST_PROCESSOR_IGNORED_IN_AOT": { "type": "string", "default": "WARNING", "description": "'BeanPostProcessor' behaviour is ignored", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.spring-aot.JAVA_BEAN_NOT_REGISTERED_IN_AOT": { "type": "string", "default": "WARNING", "description": "Not registered as Bean", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] } } }, { "id": "application-properties", "title": "Property Config Files", "order": 404, "properties": { "spring-boot.ls.problem.application-properties.PROP_INVALID_BEAN_NAVIGATION": { "type": "string", "default": "ERROR", "description": "Accessing a 'bean property' in a type that doesn't have properties (e.g. like String or Integer)", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-properties.PROP_INVALID_INDEXED_NAVIGATION": { "type": "string", "default": "ERROR", "description": "Accessing a property using [] in a type that doesn't support that", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-properties.PROP_EXPECTED_DOT_OR_LBRACK": { "type": "string", "default": "ERROR", "description": "Unexpected character found where a '.' or '[' was expected", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-properties.PROP_NO_MATCHING_RBRACK": { "type": "string", "default": "ERROR", "description": "Found a '[' but no matching ']'", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-properties.PROP_NON_INTEGER_IN_BRACKETS": { "type": "string", "default": "ERROR", "description": "Use of [..] navigation with non-integer value", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-properties.PROP_VALUE_TYPE_MISMATCH": { "type": "string", "default": "ERROR", "description": "Expecting a value of a certain type, but value doesn't parse as such", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-properties.PROP_INVALID_BEAN_PROPERTY": { "type": "string", "default": "ERROR", "description": "Accessing a named property in a type that doesn't provide a property accessor with that name", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-properties.PROP_UNKNOWN_PROPERTY": { "type": "string", "default": "WARNING", "description": "Property-key not found in any configuration metadata on the project's classpath", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-properties.PROP_DEPRECATED": { "type": "string", "default": "WARNING", "description": "Property is marked as Deprecated", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-properties.PROP_DUPLICATE_KEY": { "type": "string", "default": "ERROR", "description": "Multiple assignments to the same property value", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-properties.PROP_SYNTAX_ERROR": { "type": "string", "default": "ERROR", "description": "Syntax Error", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] } } }, { "id": "application-yaml", "title": "YAML Config Files", "order": 405, "properties": { "spring-boot.ls.problem.application-yaml.YAML_SYNTAX_ERROR": { "type": "string", "default": "ERROR", "description": "Error parsing the input using snakeyaml", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_UNKNOWN_PROPERTY": { "type": "string", "default": "WARNING", "description": "Property-key not found in the configuration metadata on the project's classpath", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_VALUE_TYPE_MISMATCH": { "type": "string", "default": "ERROR", "description": "Expecting a value of a certain type, but value doesn't parse as such", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_EXPECT_SCALAR": { "type": "string", "default": "ERROR", "description": "Expecting a 'scalar' value but found something more complex.", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_EXPECT_TYPE_FOUND_SEQUENCE": { "type": "string", "default": "ERROR", "description": "Found a 'sequence' node where a non 'list-like' type is expected", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_EXPECT_TYPE_FOUND_MAPPING": { "type": "string", "default": "ERROR", "description": "Found a 'mapping' node where a type that can't be treated as a 'property map' is expected", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_EXPECT_MAPPING": { "type": "string", "default": "ERROR", "description": "Expecting a 'mapping' node but found something else", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_EXPECT_BEAN_PROPERTY_NAME": { "type": "string", "default": "ERROR", "description": "Expecting a 'bean property' name but found something more complex", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_INVALID_BEAN_PROPERTY": { "type": "string", "default": "ERROR", "description": "Accessing a named property in a type that doesn't provide a property accessor with that name", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_DEPRECATED_ERROR": { "type": "string", "default": "ERROR", "description": "Property is marked as Deprecated(Error)", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_DEPRECATED_WARNING": { "type": "string", "default": "WARNING", "description": "Property is marked as Deprecated(Warning)", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_DUPLICATE_KEY": { "type": "string", "default": "ERROR", "description": "A mapping node contains multiple entries for the same key", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.application-yaml.YAML_SHOULD_ESCAPE": { "type": "string", "default": "WARNING", "description": "This key contains special characters and should probably be escaped by surrounding it with '[]'", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] } } }, { "id": "spel", "title": "SpEL Expressions", "order": 406, "properties": { "boot-java.validation.spel.on": { "type": "string", "default": "ON", "description": "Enablement", "enum": [ "OFF", "ON" ] }, "spring-boot.ls.problem.spel.JAVA_SPEL_EXPRESSION_SYNTAX": { "type": "string", "default": "ERROR", "description": "SpEL parser raised a ParseException", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] } } }, { "id": "version-validation", "title": "Versions and Support Ranges", "order": 407, "properties": { "boot-java.validation.java.version-validation": { "type": "string", "default": "ON", "description": "Enablement", "enum": [ "OFF", "ON" ] }, "spring-boot.ls.problem.version-validation.SUPPORTED_OSS_VERSION": { "type": "string", "default": "IGNORE", "description": "Supported OSS Boot Version", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.version-validation.UNSUPPORTED_OSS_VERSION": { "type": "string", "default": "HINT", "description": "Unsupported OSS Version", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.version-validation.UNSUPPORTED_COMMERCIAL_VERSION": { "type": "string", "default": "HINT", "description": "Unsupported Commercial Version", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.version-validation.SUPPORTED_COMMERCIAL_VERSION": { "type": "string", "default": "IGNORE", "description": "Supported Commercial Version", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.version-validation.UPDATE_LATEST_MAJOR_VERSION": { "type": "string", "default": "IGNORE", "description": "Update to Latest Major Version", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.version-validation.UPDATE_LATEST_MINOR_VERSION": { "type": "string", "default": "INFO", "description": "Update to Latest Minor Version", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] }, "spring-boot.ls.problem.version-validation.UPDATE_LATEST_PATCH_VERSION": { "type": "string", "default": "WARNING", "description": "Update to Latest Patch Version", "enum": [ "IGNORE", "INFO", "WARNING", "HINT", "ERROR" ] } } } ], "grammars": [ { "language": "spring-boot-properties-yaml", "scopeName": "source.spring-boot-properties-yaml", "path": "./yaml-support/spring-boot-properties-yaml.tmLanguage.json" }, { "language": "spring-boot-properties", "scopeName": "source.spring-boot-properties", "path": "./properties-support/spring-boot-properties.tmLanguage.json" }, { "language": "spring-factories", "scopeName": "source.spring-factories", "path": "./properties-support/spring-boot-properties.tmLanguage.json" } ] }, "main": "./out/lib/Main", "scripts": { "vscode:prepublish": "npm run compile", "compile": "tsc -p ./", "watch": "tsc -watch -p ./", "test": "npm run compile && node ./node_modules/vscode/bin/test", "vsce-package": "vsce package", "vsce-pre-release-package": "vsce package --pre-release" }, "dependencies": { "@pivotal-tools/commons-vscode": "file:../commons-vscode/pivotal-tools-commons-vscode-0.2.4.tgz", "ps-list": "^7.2.0", "vscode-languageclient": "^8.0.2" }, "devDependencies": { "@types/node": "^18.8.0", "@types/vscode": "1.67.0", "typescript": "^4.8.0", "vsce": "^2.11.0" }, "extensionDependencies": [ "redhat.java" ] }