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.