7

SBT アセンブリ プラグインを使用して実行可能な jar を作成しようとしています。

私は以下のエラーで終わっています:

[error] (app/*:assembly) deduplicate: different file contents found in the following:
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty.orbit/javax.servlet/orbits/javax.servlet-3.0.0.v201112011016.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-continuation/jars/jetty-continuation-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-http/jars/jetty-http-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-io/jars/jetty-io-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-security/jars/jetty-security-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-server/jars/jetty-server-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-servlet/jars/jetty-servlet-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-util/jars/jetty-util-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-webapp/jars/jetty-webapp-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-xml/jars/jetty-xml-8.1.8.v20121106.jar:about.html
[error] Total time: 2562 s, completed Dec 5, 2013 12:03:25 PM

アセンブリ プラグインの wiki を読んだ後、build.scala ファイルにマージ戦略を追加しました。動作していないようです。それが正しい修正かどうかはわかりません。誰かが私に正しい戦略を提案できますか.

以下は、build.scala ファイルにあるコードです。

mergeStrategy in assembly <<= (mergeStrategy in assembly) {
      (old) => {
        case "about.html" => MergeStrategy.discard
        case "logback.xml" => MergeStrategy.first //case PathList("logback.xml") => MergeStrategy.discard
        case x => old(x)
      }
    }

このドキュメントに従って、アプリとのプラグイン統合をコーディングしました:Scalatra servletのスタンドアロン展開

MergeStrategy.rename や MergeStrategy.deduplicate などのさまざまな戦略を試しました。しかし、何も機能しません..助けを求めています...

4

1 に答える 1

1

あなたのMergeStrategy見た目は正しいです。未処理の競合は、jetty jar の「about.html」case "about.html" => MergeStrategy.discardだけなので、そのまま実行する必要があります。

それでもエラーが発生する場合は、設定の再配線がmergeStrategy in assembly 行われていないか、間違った順序で行われていると思われます. 確実に知る唯一の方法は、Build.scala を確認することです。たとえば、リンクされた質問に対する@Stefan Ollingerの回答は、プロジェクトを次のように設定します。

lazy val project = Project("myProj", file(".")).
  settings(mySettings: _*).
  settings(myAssemblySettings:_*)

可能であれば、Build.scala を Gist に投稿していただけます?

于 2013-12-07T01:48:04.507 に答える