2013-08-22 5 views
2

를 만들 수 없습니다 (http://www.scalatra.org/2.2/guides/deployment/standalone.html) 나는 다음과 같은 오류 얻을 :이 무슨 뜻 무엇Scalatra 독립 실행 형 배포는 조립

[trace] Stack trace suppressed: run last *:assembly for the full output. 
[error] (*:assembly) deduplicate: different file contents found in the following: 
[error] /home/nick/.ivy2/cache/org.eclipse.jetty.orbit/javax.servlet/orbits/javax.servlet-3.0.0.v201112011016.jar:about.html 
[error] /home/nick/.ivy2/cache/org.eclipse.jetty/jetty-continuation/jars/jetty-continuation-8.1.8.v20121106.jar:about.html 
[error] /home/nick/.ivy2/cache/org.eclipse.jetty/jetty-http/jars/jetty-http-8.1.8.v20121106.jar:about.html 
[error] /home/nick/.ivy2/cache/org.eclipse.jetty/jetty-io/jars/jetty-io-8.1.8.v20121106.jar:about.html 
[error] /home/nick/.ivy2/cache/org.eclipse.jetty/jetty-security/jars/jetty-security-8.1.8.v20121106.jar:about.html 
[error] /home/nick/.ivy2/cache/org.eclipse.jetty/jetty-server/jars/jetty-server-8.1.8.v20121106.jar:about.html 
[error] /home/nick/.ivy2/cache/org.eclipse.jetty/jetty-servlet/jars/jetty-servlet-8.1.8.v20121106.jar:about.html 
[error] /home/nick/.ivy2/cache/org.eclipse.jetty/jetty-util/jars/jetty-util-8.1.8.v20121106.jar:about.html 
[error] /home/nick/.ivy2/cache/org.eclipse.jetty/jetty-webapp/jars/jetty-webapp-8.1.8.v20121106.jar:about.html 
[error] /home/nick/.ivy2/cache/org.eclipse.jetty/jetty-xml/jars/jetty-xml-8.1.8.v20121106.jar:about.html 

을, 어떻게 그것을 할 수 고정 되니? build.scala에서 각 줄 사이에 빈 줄을하지 않아도,

import sbt._ 

import Keys._ 

import org.scalatra.sbt._ 

import org.scalatra.sbt.PluginKeys._ 

import com.mojolly.scalate.ScalatePlugin._ 

import ScalateKeys._ 

import sbtassembly.Plugin._ 

import AssemblyKeys._ 



object MyScalatraWebAppBuild extends Build { 

    val Organization = "com.example" 

    val Name = "My Scalatra Web App" 

    val Version = "0.1.0-SNAPSHOT" 

    val ScalaVersion = "2.10.2" 

    val ScalatraVersion = "2.2.1" 



    mergeStrategy in assembly := mergeStrategy.first 

    jarName in assembly := "scalatra_atmosphere_demo.jar" 



     lazy val project = Project (

     "my-scalatra-web-app", 

     file("."), 

     settings = Defaults.defaultSettings ++ ScalatraPlugin.scalatraWithJRebel ++ scalateSettings ++ assemblySettings ++ Seq(

      organization := Organization, 

      name := Name, 

      version := Version, 

      scalaVersion := ScalaVersion, 

      resolvers += Classpaths.typesafeReleases, 

      libraryDependencies ++= Seq(

      "org.scalatra" %% "scalatra" % ScalatraVersion, 

      "org.scalatra" %% "scalatra-scalate" % ScalatraVersion, 

      "org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test", 

      "ch.qos.logback" % "logback-classic" % "1.0.6" % "runtime", 

      "org.eclipse.jetty" % "jetty-webapp" % "8.1.8.v20121106" % "container;compile", 

      "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar")), 

      "org.scalatra" %% "scalatra-atmosphere" % "2.2.1", 

      "org.scalatra" %% "scalatra-json" % "2.2.1", 

      "org.json4s" %% "json4s-jackson" % "3.2.4", 

      "org.eclipse.jetty" % "jetty-websocket" % "8.1.10.v20130312" % "container" 

     ), 

      scalateTemplateConfig in Compile <<= (sourceDirectory in Compile){ base => 

      Seq(

       TemplateConfig(

       base/"webapp"/"WEB-INF"/"templates", 

       Seq.empty, /* default imports should be added here */ 

       Seq(

        Binding("context", "_root_.org.scalatra.scalate.ScalatraRenderContext", importMembers = true, isImplicit = true) 

       ), /* add extra bindings here */ 

       Some("templates") 

      ) 

      ) 

      }, 

      resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/" 

     ) 

    ) 

답변

1

첫째 :

여기에 병합 전략을 처음으로 설정되는 내 빌드 파일입니다.

두 번째로 sbt- 어셈블리의 설정은 프로젝트 설정의 일부 여야하므로 Seq(...)에 어딘가에 포함시켜야합니다.

셋째, 유형이 잘못되었으므로 병합 전략이 작동하지 않으며 일반적으로 모든 것을 먼저 선택할 수 없습니다. 다음과 같이 시도해야합니다.

Seq(
    organization := Organization, 
    name := Name, 
    .... 

    jarName in assembly := "scalatra_atmosphere_demo.jar", 
    mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) => 
    { 
     case PathList(xs @ _*) if xs.last endsWith ".html" => MergeStrategy.first 
     case x => old(x) 
    } 
    } 
)