2013-06-19 25 views
6

Muszę skonfigurować Ivy lock strategy w sbt build.Jak skonfigurować strategię blokowania Ivy w Sbt

próbowałem umieścić externalIvySettings(baseDirectory(_/"ivysettings.xml")) w 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> 

ale w tym przypadku nie można rozwiązać SBT zależności (przypuszczam, bo przeliczniki są ekranowane przez przeliczniki z ivysettings).

Jak skonfigurować strategię blokowania w Build.scala?

Odpowiedz

2

Po spędzeniu trochę czasu znalazłem rozwiązanie. Kopiować, wklejać ivyConfiguration z defaultSettings i zastąpić parametr GlobalLock z None (muszę wyłączyć blokadę):

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) 
     } 

Wygląda na to obejście dla mnie, ale to działa. Teraz nie ma blokady bluszczu. Pomóż mi ulepszyć rozwiązanie, jeśli wiesz jak, odkąd jestem nowy w sbt.