Files
openide/platform/jps-bootstrap
Shumaf Lovpache 898a21050b IJ-CR-166159 IJPL-192457 Upgrade ktor 3.0.3 -> 3.1.3
Merge-request: IJ-MR-166125
Merged-by: Shumaf Lovpache <soarex16@gmail.com>
(cherry picked from commit cd61040c67d8ed5ea53a3ffcc6535a60b07d9a90)

# Conflicts:
#	.idea/libraries/io_ktor_sse.xml
#	.idea/libraries/io_ktor_websocket_serialization.xml
#	fleet/build/gradle/jps.versions.toml
#	fleet/ktor/client/core/BUILD.bazel
#	fleet/ktor/client/core/fleet.ktor.client.core.iml
#	fleet/ktor/client/core/gradlebuild/build.gradle.kts
#	language-server/community/kotlin-lsp/src/com/jetbrains/ls/kotlinLsp/stdio.kt
#	lib/BUILD.bazel
#	lib/MODULE.bazel
#	rider/build/tests/testData/RiderPackagingTest/rider-content.yaml

GitOrigin-RevId: c6c8283bf3b339524b84c057a07dfa9bb6e15bb8
2025-07-25 19:16:52 +00:00
..

jps-bootstrap

jps-bootstrap: a small utility that loads JPS project, compiles it, and runs any class from it.

It tries very hard to run your code that same way you'd run it from IDE's gutter.

Previous way of running build scripts

Locally: run *.gant from IDEA or via gant.xml

On buildserver: gant.xml

Downsides:

  • Supports only groovy code. We're tired of groovy.
  • Uses binary dependencies for JPS & Utils, which defies the monorepo approach and also creates duplicate classes in IDEA project
  • Hard to generate and process build output. On buildserver it's not easy to output something correctly, the output is intercepted and processed by both TeamCity code and ant

Running build scripts via jps-bootstrap

Locally

  • just run CLASS_NAME from IDEA
  • run any main class (written in Java/Kotlin) from intellij project via
    ./jps-bootstrap.cmd MODULE_NAME CLASS_NAME ARGS

Example: ./community/platform/jps-bootstrap/jps-bootstrap.sh intellij.idea.ultimate.build DownloadLibrariesBuildTarget

Special wrappers could be written to make scripts easier, see e.g. build/downloadLibraries.cmd

On buildserver:

  • Separate build compiles jps-bootstrap (only when jps-bootstrap sources are changed)
  • jps-bootstrap is used to run Compile Inc (it compiles build scripts on the fly)
  • On any other build, jps-bootstrap uses already compiled classes from Compile Inc