slickless icon indicating copy to clipboard operation
slickless copied to clipboard

Make slick and shapeless a runtime dependency

Open d6y opened this issue 8 years ago • 1 comments

The project build depends on slick and shapeless, naturally. But should they be run-time dependencies to allow the end user to make minor version changes?

Not sure what the best practice is here. For example, as of right now while I'm writing this issue, we've published slickless for Slick 3.2.0-M2. If I want to use this with 3.2.0 final I see:

[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn] 	* com.typesafe.slick:slick_2.12:3.2.0-M2 -> 3.2.0
[warn] Run 'evicted' to see detailed eviction warnings

I think we can mark these lines as % runtime (or something like that):

https://github.com/underscoreio/slickless/blob/master/build.sbt#L21-L22

I'll do that, unless anyone wants to point to th error of my ways :-)

d6y avatar Mar 15 '17 16:03 d6y

Eviction isn't problem, you can make changes to version as long API does not change with version change. Adding them as Runtime would mean that everybody must declare dependencies and their version, now upgrading is optional.

For most Scala projects dependencies aren't declared as runtime.

I like to declare every dependency separately so I can use https://github.com/rtimush/sbt-updates plugin to see updates (and then check agains security update notices). I have 30 evection notices, best example I can give is this: org.slf4j:slf4j-api:(1.7.21, 1.6.1, 1.7.7, 1.7.22, 1.7.10, 1.7.16, 1.7.12) -> 1.7.24 over 20 packages depend on this with different versions 😄

margussipria avatar Mar 16 '17 10:03 margussipria