-
Notifications
You must be signed in to change notification settings - Fork 31
Description
Proposal: Introduce a Shared MicroProfile Tools for IntelliJ
Background
Today, there are two IntelliJ-based plugins providing MicroProfile support:
Both plugins integrate the MicroProfile Language Server (MicroProfile LS) for LSP-based features (completion, diagnostics, hover, etc.), and both use LSP4IJ for their client-side LSP integration.
MicroProfile LS requires access to project metadata (e.g., Java classes, annotations) to compute MicroProfile-related features such as property completion in microprofile-config.properties.
This Java source scanning is not performed directly by MicroProfile LS. Instead, it delegates to the IDE integration layer (Eclipse JDT AST in Eclipse/VS Code, IntelliJ PSI for IntelliJ-based IDEs).
Current Situation
The Java class scanning logic for MicroProfile is implemented inside each plugin separately:
- Quarkus Tools implements PSI-based class scanning to collect MicroProfile metadata.
- Liberty Tools copied and adapted the same scanning logic from Quarkus Tools.
As a result:
- The two implementations have diverged — they no longer provide consistent MicroProfile behavior (e.g., Quarkus Tools includes MicroProfile validation that Liberty Tools does not, and vice versa).
- The two plugins cannot currently be installed together in the same IDE instance.
Even if the installation conflict is resolved, both plugins will start their own instance of the MicroProfile LS, leading to duplicate validations, completions, and input help.
Problem Summary
| Problem | Description |
|---|---|
| Code Duplication | Class scanning and MicroProfile integration logic are duplicated and diverging across plugins. |
| Incompatibility | Installing both Quarkus Tools and Liberty Tools is currently impossible. |
| Double Language Server Instances | Even if installation succeeds, MicroProfile LS would be launched twice, causing duplicated LSP features. |
Proposed Solution
To address these issues, we propose introducing a new IntelliJ plugin:
🧩 IntelliJ MicroProfile Tools
This plugin would serve as a shared foundation for MicroProfile support across multiple IntelliJ-based tools.
Responsibilities
- Provide a single implementation of the IntelliJ-side Java class scanning (using PSI).
- Manage the shared MicroProfile LS instance (so it runs once per IDE, not once per plugin).
- Offer common MicroProfile validation and completion logic for any IntelliJ-based MicroProfile integration.
- Expose extension points allowing Quarkus Tools and Liberty Tools to contribute framework-specific enhancements (e.g., Quarkus config, Liberty runtime integration).
Benefits
- ✅ Consistency — identical MicroProfile behavior across Quarkus Tools and Liberty Tools.
- ✅ Maintainability — no more duplicated or diverging scanning logic.
- ✅ Compatibility — both plugins can coexist and share the same LS instance.
- ✅ Extensibility — future MicroProfile-based tools can reuse the same integration layer.
Prior Art (VS Code Ecosystem)
A similar architecture has already been successfully implemented in the VS Code ecosystem.
- The vscode-microprofile extension provides the core MicroProfile support for VS Code.
- Both vscode-quarkus and Liberty Tools for VS Code extend this shared extension to provide framework-specific features.
This model has proven effective for:
- Reducing duplication of MicroProfile-related logic.
- Providing a consistent user experience across different runtimes.
- Simplifying the integration and maintenance of the MicroProfile LS.
The proposed IntelliJ MicroProfile Tools plugin aims to replicate this successful design for IntelliJ-based IDEs.
Implementation Strategy
- Extract PSI-based MicroProfile scanning code from Quarkus Tools.
- Move this logic into a new
intellij-microprofileplugin. (MicroProfile Tools for IntelliJ) - Make Quarkus Tools and Liberty Tools depend on this new plugin.
- Refactor both plugins to delegate their MicroProfile integration through this shared module.
Project Hosting Consideration
If this proposal is accepted, the next question is where to host the new plugin.
The recommended option is to host it within the Eclipse LSP4MP repository, alongside the existing MicroProfile Language Server.
Benefits of hosting under LSP4MP
- 🧩 Shared governance and release cycle with the MicroProfile LS.
- 🛠️ Centralized maintenance for all IDE integrations (Eclipse, VS Code, IntelliJ).
- 🤝 Consistency across IDEs, ensuring that all clients use the same MicroProfile LS implementation and metadata model.
- 🌍 Community alignment — the LSP4MP project already represents the official MicroProfile tooling under the Eclipse Foundation.
Long-Term Vision
This new plugin can serve as the official IntelliJ integration for MicroProfile LS, similar to how the Eclipse ecosystem uses org.eclipse.lsp4mp as a common foundation for MicroProfile support across multiple IDEs.