Scala CLI project in IntelliJ alongside your existing SBT project
If you've read through the basic IDEA IntelliJ cookbook, then you already know how to import a Scala CLI
project using BSP. However, did you know that it's possible to import one alongside an SBT project? (Or any other
build tool's project, for that matter.)
Here's a walk-through for a simple example.
Let's say you have an existing SBT project that you're working with for a while now. You have imported it in IntelliJ
and the integration works nicely.
The project's structure looks roughly like this:
tree -a
.
├── .bsp
│ └── sbt.json
├── .idea
│ ├── .gitignore
│ ├── codeStyles
│ │ ├── Project.xml
│ │ └── codeStyleConfig.xml
│ ├── libraries
│ │ ├── sbt__junit_junit_4_13_2_jar.xml
│ │ ├── sbt__org_hamcrest_hamcrest_core_1_3_jar.xml
│ │ ├── sbt__org_scala_lang_scala3_library_3_3_1_3_jar.xml
│ │ ├── sbt__org_scala_lang_scala_library_2_13_8_jar.xml
│ │ ├── sbt__org_scala_sbt_test_interface_1_0_jar.xml
│ │ ├── sbt__org_scalameta_junit_interface_1_0_0_M6_jar.xml
│ │ └── sbt__org_scalameta_munit_3_1_0_0_M6_jar.xml
│ ├── misc.xml
│ ├── modules
│ │ ├── intellij-sbt-with-scala-cli-bsp-build.iml
│ │ └── intellij-sbt-with-scala-cli-bsp.iml
│ ├── modules.xml
│ ├── sbt.xml
│ ├── scala_compiler.xml
│ ├── vcs.xml
│ └── workspace.xml
├── build.sbt
├── project
│ └── build.properties
├── scripts
│ ├── AnotherScript.sc
│ └── SomeScript.sc
├── src
│ ├── main
│ │ └── scala
│ │ └── main.scala
│ └── test
│ └── scala
│ └── MyTests.test.scala
└── target
└── scala-3.1.3
├── classes
│ ├── main$package$.class
│ ├── main$package.class
│ ├── main$package.tasty
│ ├── main.class
│ └── main.tasty
└── test-classes
├── MyTests.class
└── MyTests.tasty
16 directories, 32 files
Now, let's say that at some point you decide you need to occasionally run some scripts relevant to this project. You run those scripts with Scala CLI and decide it'd be convenient to keep them in the same repository.
tree scripts
scripts
├── AnotherScript.sc
└── SomeScript.sc
0 directories, 2 files
However, you already import this repo as an SBT project, so what can you do?
Well, you can import the Scala CLI scripts as a BSP module alongside your SBT project.
Make sure you setup the BSP configuration for the scripts directory first:
scala-cli setup-ide scripts
As a result, a scripts/.bsp directory should be created.
Now, right-click on your project root directory in IntelliJ and go into Module Settings

Then, under Project Structure -> Modules press the + button and then Import Module.

Navigate to the scripts directory from there and add it as a BSP module (BSP should be an available choice,
if the setup-ide command was run correctly).

Now the scripts BSP module should be imported and you should be able to run the scripts from your IDE.
The end result should look like this:
