-
Notifications
You must be signed in to change notification settings - Fork 205
Developer Manual Overview
This document provides an overview of the internal structure and architecture of the Spring Tools 4. The target audience of this overview are developers who want to understand how the Spring Tools 4 work under the hood, want to contribute to the project, and/or want to get a look inside.
The Spring Tools 4 consist out two central areas:
- The language servers
- The integration of the language servers into existing IDEs and editors together with additional client-side extensions to those IDEs and editors
Language Servers are implemented in Java and follow the overall architecture behind the language server protocol. If you not familiar with the concept of language servers, we strongly recommend to make yourself familiar with the concepts here: https://microsoft.github.io/language-server-protocol/
In total, this projects contain four different language servers:
-
Spring Boot language server: provides features for Spring projects and focuss on Spring specific things like editing Spring Boot property files, editing source code that inside of Spring Boot applications, quick navigation, etc. Details about the features from the users point of view can be found in the user guide wiki.
-
Cloud Foundry Manifest language server: provides basic features like hover help, content-assist, and validation for manifest.yml files that are used when deploying applications to Cloud Foundry.
-
Concourse language server: provides features like hover help, content-assit, and validation for build pipeline definition files for Concourse CI.
-
BOSH language server: provides features lile hover help, content-assist, and validation for YML files that are used when managing PaaS installations via BOSH.
The language servers are implemented in Java and can be found in headless-services
directory. The share a few components that are implemented in the commons sub-directory.
More details about the structure, the architecture, and how to get started with each of those language servers can be found in their README.md files.
The integration of the language servers into the Eclipse Desktop IDE is done by implementing regular plug-ins for the
Eclipse IDE and using the LSP4E project to integrate the language servers into that environment. The Eclipse projects
can be found in the eclipse-language-servers
directory.
In addition to the pure integration of the language servers into Eclipse, the project also contains a number of
Eclipse-specific client-side extensions for the IDE. Those are located in the eclipse-extensions
directory.
In addition to the individual extensions for Eclipse, the project also implements the necessary files and configs to
build a ready-to-use Eclipse distribution, which includes all the extensions pre-installed. Those definition files for the
Spring Tools 4 Eclipse product can be found in the eclipse-distribution
directory.
The extensions for Visual Studio Code are implemented in the directory vscode-extensions
. They mainly contain a lightweight
extension for Visual Studio Code to get the above mentioned language servers into the Visual Studio Code environment.
The individual pieces of the project are quite decoupled from each other. So depending on the area you are most interested in, the way to get started is different.
The README.md files in each directory will provide you with the necessary information how to get started on each component and how to setup your dev environment for it.
- Installation (latest release + snapshots)
- User Guide
- Getting Started
- Navigation
- Live Application Information
- Content Assist
- Version Validation
- Upgrade Support
- Validations and Quick Fixes
- WebFlux Support
- Boot Properties Editor
- Boot Dashboard
- Other Editors
- STS3
- Custom VM args
- FAQ
- Changelog
- Known Limitations & Issues
- Report an Issue
- Developer Manual
- Overview
- Language Server Integration into Clients
- Communication with JDT LS
- STS4 Language Server Protocol Extensions