Skip to content

Proposal: Introduce a Shared MicroProfile Tools for IntelliJ #508

@angelozerr

Description

@angelozerr

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:

  1. 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).
  2. 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.

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

  1. Extract PSI-based MicroProfile scanning code from Quarkus Tools.
  2. Move this logic into a new intellij-microprofile plugin. (MicroProfile Tools for IntelliJ)
  3. Make Quarkus Tools and Liberty Tools depend on this new plugin.
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions