Coursier + Bloop = Another Build Tool?

Just out of curiosity, since these two both have plugins of sbt, why not just ditch sbt and combine these two to create a tool just like rust-lang’s cargo to get away from all the quirks that sbt has and provide a more easy-to-use experience to the newcomers. I know backward compatibility is important, but scala3 is already a giant leap and why not leverage that and promote a new build tool?

I am not trying to blame sbt and ignore the work of sbt contributers but I have to say sbt doesn’t meet my expectation in many ways.

Are you looking for another Scala build tool that uses Coursier and Bloop ?

If I’m right, give Mill a try. This build tool was created because of some problems with SBT.
Its syntax is really light for a “minimal-required” module:

import mill._, scalalib._

object main extends ScalaModule {
  def scalaVersion = "3.0.0"
}
3 Likes

Just to add to this - you can use this combination with VS Code and the VS code Metals plugin. The Mill project is imported and you are ready to go.

Thanks for your reply. I know about mill. However my point is to hava scala’s “cargo”. Cargo describes itself as “a package manager and build tool for the Rust language” and as for scala, coursier is pretty handy for managing packages and bloop is for building codes. Therefore, the idea of combining the two just emerged.

In short, why can’t we have scala’s “cargo” now that we already have coursier and bloop?

But Mill already does that merging. You declare your dependencies in the build.sc and those will be downloaded by Coursier (used by Mill). Note that Mill caches its libraries, so if you use Coursier’s command line to download libraries (not applications), Mill will use them.

EDIT: Bloop is a compile server. You don’t strictly need Bloop to compile and execute your project. You can use the Mill command line.

1 Like

Plus Mill supports Bloop and BSP

1 Like

There is Bleep, it’s much more lightweight than mill or sbt, and it pretty much looks like a Cargo.toml or package.json. I would say I actually really like the scala-cli -> bleep -> mill transition. In fact since they are all so independent, I could go bleep -> scala-cli -> mill -> mill + sbt. Scala’s build system are simply powerful, now they’re usable too — except for sbt… But hey! They’re working on 2.0, so one can have their hopes up, right?