assemblée-fusionner-des questions de stratégie à l'aide de sbt-assemblée

Je suis en train de convertir un projet scala dans un déploiement de graisse pot à l'aide de sbt-assemblée. Quand je lance mon assemblée tâche dans sbt j'obtiens l'erreur suivante:

Merging 'org/apache/commons/logging/impl/SimpleLog.class' with strategy 'deduplicate'
    :assembly: deduplicate: different file contents found in the following:
    [error] /Users/home/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.1.1.jar:org/apache/commons/logging/impl/SimpleLog.class
    [error] /Users/home/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.6.4.jar:org/apache/commons/logging/impl/SimpleLog.class

Maintenant à partir de la sbt-documentation de l'assemblée:

Si plusieurs fichiers à partager le même chemin relatif (par exemple, une ressource nommée
application.conf dans de multiples dépendance des Pots), la stratégie par défaut est
pour vérifier que tous les candidats ont le même contenu et la sortie d'erreur
sinon. Ce comportement peut être configurée sur chaque chemin d'accès de base à l'aide de
soit l'une des opérations suivantes intégré dans les stratégies ou de l'écriture d'un programme personnalisé:

  • MergeStrategy.deduplicate est la valeur par défaut décrites ci-dessus
  • MergeStrategy.first prend le premier de l'appariement des fichiers dans le classpath de l'ordre
  • MergeStrategy.last choisit le dernier
  • MergeStrategy.singleOrError écope avec un message d'erreur sur les conflits
  • MergeStrategy.concat simplement concatène tous les fichiers correspondants et comprend le résultat
  • MergeStrategy.filterDistinctLines aussi concatène, mais laisse les doublons, le long de la voie
  • MergeStrategy.rename renomme les fichiers provenant de fichiers jar
  • MergeStrategy.discard supprime simplement les fichiers correspondants

D'aller par ce que je peux configurer mon build.sbt comme suit:

import sbt._
import Keys._
import sbtassembly.Plugin._
import AssemblyKeys._
name := "my-project"
version := "0.1"
scalaVersion := "2.9.2"
crossScalaVersions := Seq("2.9.1","2.9.2")

//assemblySettings
seq(assemblySettings: _*)

resolvers ++= Seq(
    "Typesafe Releases Repository" at "http://repo.typesafe.com/typesafe/releases/",
    "Typesafe Snapshots Repository" at "http://repo.typesafe.com/typesafe/snapshots/",
    "Sonatype Repository" at "http://oss.sonatype.org/content/repositories/releases/"
)

libraryDependencies ++= Seq(
    "org.scalatest" %% "scalatest" % "1.6.1" % "test",
    "org.clapper" %% "grizzled-slf4j" % "0.6.10",
    "org.scalaz" % "scalaz-core_2.9.2" % "7.0.0-M7",
    "net.databinder.dispatch" %% "dispatch-core" % "0.9.5"
)

scalacOptions += "-deprecation"
mainClass in assembly := Some("com.my.main.class")
test in assembly := {}
mergeStrategy in assembly := mergeStrategy.first

Dans la dernière ligne de la construction.sbt, j'ai:

mergeStrategy in assembly := mergeStrategy.first

Maintenant, quand je lance SBT, j'obtiens l'erreur suivante:

error: value first is not a member of sbt.SettingKey[String => sbtassembly.Plugin.MergeStrategy]
    mergeStrategy in assembly := mergeStrategy.first

Quelqu'un peut-il point de ce que je pourrais faire de mal ici?

Grâce

InformationsquelleAutor sc_ray | 2013-02-09