Skip to main content

Dependencies

Dependencies in Bleep are specified almost like in sbt, mill and so on

Java dependency

Java dependencies separate coordinate parts by colon (like sbt's %)

- org.scalameta:svm-subs:101.0.0

Scala dependency

Scala dependencies use two colons after organization (similar to sbt's %%)

- com.monovore::decline:2.3.1

Scala.js / Scala Native dependency

Surprise! These also use two colons, not three like in sbt.

    - com.lihaoyi::pprint:0.8.0

But that's not like sbt does it!?

Bleep flips the default, the easiest syntax should be used for the most common thing.

If you want to add such a Scala JVM dependency to a JS/Native project, you can use the long form and a boolean flag

- forceJvm: true
module: com.softwaremill.sttp.client3::httpclient-backend-fs2:3.3.18

Long form

As seen above, if you manually change this short form

- org.scala-sbt::librarymanagement-core:1.7.1

to this long form:

- module: org.scala-sbt::librarymanagement-core:1.7.1

you can now tweak the dependency further.

 - exclusions:
org.scala-sbt: util-logging_2.13
for3Use213: true
module: org.scala-sbt::librarymanagement-core:1.7.1

You'll also get IDE support for navigating this:

Dependency upon sbt plugins

This lets you build sbt plugins with bleep (note that publishing is not implemented yet)

    dependencies:
- isSbtPlugin: true
module: ch.epfl.scala:sbt-scalajs-bundler:0.20.0
- configuration: provided
module: org.scala-sbt:sbt:1.5.5

Updating dependencies

bleep can update it's own dependencies using cli commands.

bleep build update-deps

will update all the dependencies of a build. It is also possible to specify a single dependency or dependencies of a single organization to upgrade using the command

bleep build update-dep com.example::foo
# Alternatively for all dependencies of the organization
bleep build update-dep com.example

The update commands support two flags:

  • --prerelease which updates to the latest prerelease version if possible
  • --steward which makes the update command update to the version according to the same strategy that Scala Steward uses. Detailed description of the strategy can be found here.

Limitations

Note that Bleep has shed support for the most intricate ivyisms. What is left makes the structure much more cacheable, and should be enough for 99% of projects.