2013-06-19 39 views
6

我需要在sbt build中配置Ivy lock strategy如何在Sbt中配置Ivy的鎖策略

我試圖把externalIvySettings(baseDirectory(_/"ivysettings.xml"))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> 

但在這種情況下,SBT無法解析的依賴(我猜想,因爲解析器是由解析器從ivysettings屏蔽)。

如何在Build.scala中配置鎖定策略?

回答

2

花了一些時間後,我找到了解決方案。從defaultSettings我複製粘貼ivyConfiguration,取而代之的是無GlobalLock參數(我需要禁用鎖):

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

它看起來像我的一個解決辦法,但它的工作原理。現在沒有常春藤鎖。 如果您知道如何,請幫我改進解決方案,因爲我是新來的sbt。