Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to configure Ivy's lock strategy in Sbt

Tags:

scala

sbt

ivy

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 ?

like image 243
Oleksandr.Bezhan Avatar asked Jun 19 '13 14:06

Oleksandr.Bezhan


1 Answers

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.

like image 122
Oleksandr.Bezhan Avatar answered Nov 10 '22 00:11

Oleksandr.Bezhan