Back to Intellij Community

Product DSL

platform/build-scripts/product-dsl/README.md

2025.3-rc-23.0 KB
Original Source

Product DSL

A Kotlin DSL for defining IntelliJ product module composition and generating module dependencies.

How to Run

  • IDE: Run configuration Generate Product Layouts
  • Bazel: bazel run //platform/buildScripts:plugin-model-tool
  • CLI flags:
    • --json outputs model analysis
    • --json='{"filter":"products"}' for specific sections

Architecture

The generation uses a 5-stage pipeline with slot-based ComputeNode execution:

GenerationPipeline.execute(config)
  │
  ├─ STAGE 1: DISCOVER      → Module sets + products from DSL
  ├─ STAGE 2: BUILD_MODEL   → Caches + shared values  
  ├─ STAGE 3: GENERATE      → Parallel ComputeNodes (slot-based dependencies)
  ├─ STAGE 4: AGGREGATE     → Collect errors, diffs, tracking maps
  └─ STAGE 5: OUTPUT        → Cleanup orphan files/dirs, commit, build stats

For detailed architecture, file organization, and component documentation, see architecture-overview.md

Documentation Guide

If you want to...Read...
Get started quicklyquick-start.md
Learn the DSL syntaxdsl-api-reference.md
Understand module setsmodule-sets.md
Fix validation errorserrors.md
Migrate existing codemigration-guide.md

All Documentation

Module Set Definition

Module sets are defined in:

  • CommunityModuleSets.kt (this module) - Community module sets
  • platform/buildScripts/src/productLayout/UltimateModuleSets.kt - Ultimate module sets

Product Definition

Products are defined in:

  • platform/buildScripts/src/productLayout/ - Product specifications and ultimateGenerator.kt

See ultimateGenerator.kt for the main entry point.