2017-02-08 5 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は1つのエラーが文句を言う、それは

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

誰でもこのことを私に説明でき、この問題をどう解決するか

+0

sbtで正常に動作しますか?はいの場合は、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

しかし、 "assembly:assembly"の代わりに "mergeStrategy in assembly:="を使用することはできますが、何のエラーもなく、なぜですか?そして、私が "assemblyMergeStrategy in assembly:="を使用すると。 IDEがエラーを起こします。 – Coinnigh

+0

@Coinnighそれは何の不平を言っているのですか?削除されていないため*使用できません。 –

+0

シンボル "assemblyMergeStrategy"を解決できません。sbtバージョンに互換性がありませんか?バージョンは0.13.9になりました。 – Coinnigh

関連する問題