From some sbt document(e.g. scopes), I see:
{.}/*:name
means name
in entire build
(use name in ThisBuild
to define it)
*/*:name
means name
in global project
(use name in Global
to define it)
(PS: I ignored the config part *:
)
But, I still don't know what is the difference between them, they seem exactly the same to me.
Is there any thing I can do with one rather than another one?
Whatever version you specified in ThisBuild will be applied to all projects in your build, overriding anything that was possibly defined in Global.
For example: Key "version"
For Global scope it was defined in Defaults.scala with value "0.1-SNAPSHOT".
For your projects in this build you might want to overwrite that with:
version in ThisBuild := "3.0.1"
So, because [{.}/*:version] has precedence over [*/*:version], whenever you get "version" in your projects, you fetch "3.0.1" instead of "0.1-SNAPSHOT".
This pretty much explains the difference and how you could use one and not the other.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With