2017-02-08 2 views
1

я встретил странную ошибку в идее IDE из СБТ, стратегия слияния выглядит следующим образом,Как исправить ошибку о sbt в идее IDE?

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

кажется хорошо, но, к сожалению, интегрированная среда одна ошибка, это

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

Любой может объяснить это мне и как решить эту проблему, пожалуйста?

+0

Сработало ли это с sbt? Если да, то игнорируйте ошибку intellij idea. –

ответ

1

mergeStrategy (и оператор <<=) устарел. Используйте вместо этого assemblyMergeStrategy:

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: =» вместо «assemblyMergeStrategy in assembly: =» без каких-либо ошибок, почему? И когда я использую «assemblyMergeStrategy в сборке: =». IDE жалуется на ошибку. – Coinnigh

+0

@Coinnigh На какую ошибку он жалуется? Вы можете использовать его, потому что он только * устарел *, а не удален. –

+0

Не удается разрешить символ "assemblyMergeStrategy", не так ли, что версия sbt несовместима? Версия теперь 0.13.9. – Coinnigh