2017-02-08 31 views
1

我在SBT的想法IDE遇到了一個奇怪的錯誤,合併策略如下,如何解決思想IDE中有關sbt的錯誤?

mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) => 
    { 
    case m if m.toLowerCase.endsWith("manifest.mf") => MergeStrategy.discard 
    case m if m.startsWith("META-INF") => MergeStrategy.discard 
    case PathList("javax", "servlet", xs @ _*) => MergeStrategy.first 
    case PathList("org", "apache", xs @ _*) => MergeStrategy.first 
    case PathList("org", "jboss", xs @ _*) => MergeStrategy.first 
    case "about.html" => MergeStrategy.rename 
    case "reference.conf" => MergeStrategy.concat 
    case _ => MergeStrategy.first 
    } 
} 

這似乎很好,但遺憾的是,IDE會一個錯誤,這是

Cannot resolve reference <<= with such signature 
Type mismatch,expected:Def.Initialize[(String) => Plugin.MergeStrategy], 
actual:Def.Initialize[Any]. 

任何人都可以向我解釋這個問題,請問如何解決這個問題?

+0

它可以正常工作嗎?如果是,則忽略intellij想法錯誤。 –

回答

1

mergeStrategy(和<<=運算符)已棄用。改爲使用​​:

assemblyMergeStrategy in assembly := { 
    case m if m.toLowerCase.endsWith("manifest.mf") => MergeStrategy.discard 
    case m if m.startsWith("META-INF") => MergeStrategy.discard 
    case PathList("javax", "servlet", [email protected]_*) => MergeStrategy.first 
    case PathList("org", "apache", [email protected]_*) => MergeStrategy.first 
    case PathList("org", "jboss", [email protected]_*) => MergeStrategy.first 
    case "about.html" => MergeStrategy.rename 
    case "reference.conf" => MergeStrategy.concat 
    case s => MergeStrategy.defaultMergeStrategy(s) 
} 
+0

但是我可以使用「mergeStrategy in assembly:=」而不是「assemblyMassegeStrategy in assembly:=」而沒有任何錯誤,爲什麼?當我使用「assemblyMergeStrategy in assembly:=」。 IDE抱怨錯誤。 – Coinnigh

+0

@Coinnigh它抱怨什麼錯誤?您可以使用它,因爲它只是*棄用*,不會被刪除。 –

+0

無法解析符號「assemblyMergeStrategy」,它是否與sbt版本不兼容?該版本現在是0.13.9。 – Coinnigh

相關問題