I need to configure Ivy lock strategy in sbt build.
I tried to place externalIvySettings(baseDirectory(_ / "ivysettings.xml"))
in Build.scala
ivysettings.xml:
<ivysettings>
<settings defaultResolver="default"/>
<include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
<lock-strategies>no-lock</lock-strategies>
</ivysettings>
But in this case sbt cannot resolve dependencies(I suppose because resolvers are shielded by resolvers from ivysettings).
How can I configure lock strategy in Build.scala
?
After spending some time around I found the solution. I copy-pasted ivyConfiguration from defaultSettings and replaced GlobalLock parameter with None (I need to disable lock):
ivyConfiguration <<= (externalResolvers, ivyPaths, offline, checksums, appConfiguration, target, streams) map { (rs, paths, off, check, app, t, s) =>
val resCacheDir = t / "resolution-cache"
new InlineIvyConfiguration(paths, rs, Nil, Nil, off, None, check, Some(resCacheDir), s.log)
}
It looks like a workaround for me, but it works. Now there is no ivy lock. Please help me improve the solution if you know how, since I'm new to sbt.
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