2013-10-08 12 views
21

Sto usando un'estensione JSON che si basa sul gioco-json 2.2-SNAPSHOT di Mandubian. Tutto ha funzionato bene fino ad ora ho un progetto basato su Scala-STM. sbt segnala il seguente problema:Suffissi incrociati in versione incrociata (sbt, Scala-STM, Play-JSON)

[error] Modules were resolved with conflicting cross-version suffixes 
     in {file:folder}project: 
[error] org.scala-stm:scala-stm _2.10, _2.10.0 
java.lang.RuntimeException: Conflicting cross-version suffixes in: 
    org.scala-stm:scala-stm 

C'è qualche possibilità di approfondire dove queste due versioni "in conflitto" provengono? Sono abbastanza sorpreso dal fatto che il play-json dovrebbe dipendere da scala-stm ?!

Inoltre, c'è un modo per convincere sbt a chiudere il ... up. Perché ovviamente 2.10 e 2.10.0 sono versioni equivalenti.


EDIT: questo sembra essere un SBT 0,13 bug (e probabilmente non ha nulla a che fare con Play-JSON), perché se ritornare alla 0.12.4, il progetto aggiorna con successo e costruisce. Sono ancora interessato a un lavoro in giro per sbt 0.13.

+0

Anziché utilizzare lo SNAPSHOT di Mandubian come suoneria, perché non aggiungere solo questa dipendenza - "" play% "play_2.10"% "2.1.0" 'per la mia domanda - http://stackoverflow.com/questions/19436069/adding-play-json-library-to-sbt –

+0

Non sono sicuro che sia un bug. Ho visto questo problema anche dopo l'aggiornamento, ma poi ho scoperto che c'erano effettivamente due diverse versioni di una libreria in uso. Potrebbe essere utile –

risposta

21

È possibile aggirare il problema rimuovendo scala-STM con escludono

"dependencyGroupId" %% "dependencyArtifactId" % "dependencyVersion" exclude("org.scala-stm", "scala-stm_2.10.0") 

Non dimenticare di fare sbt clean.

+0

Grande, ha funzionato Buono a sapersi sul metodo 'exclude'! –

+2

Dove lo aggiungo nella mia app' play'? Presumo 'Build.scala', ma dove dentro di esso? –

+1

'Build.scala' per un progetto appena creato (Play 2.1.x, come 2.2 non usa più Build.scala) contiene variabile' val appDependencies' che contiene un 'Seq' con dipendenze. – kompot

2

Aggiornamento Play2 2.2 - il downgrade a SBT da 0.13.0 -> 0.12.4 non ha funzionato con me, ma escludendo l'utilizzo di exclude ("org.scala-stm", "scala-stm_2.10.0") su TUTTI dipendenze specifiche per app Avevo funzionato bene - comunque - nessuna delle mie dipendenze non dovrebbe avere nulla a che fare con scala-stm.

+0

Quindi stai dicendo che hai avuto lo stesso problema con Play 2.2? –

+0

Esattamente. Si è verificato un problema quando stavo passando da Play2 2.1 a 2.2, prima che tutto andava bene con 0.12.4 e Play2 2.1 –

2

Se si desidera visualizzare tutte le librerie inserite nel progetto SBT, è possibile utilizzare il plug-in SBT dependency graph.

Utilizzando questo, è possibile capire perché viene importato scala-stm e verificare anche altre dipendenze di scala 2.10 e 2.11 in conflitto.

+0

Grazie, ho ora installato questo plugin globalmente e lo uso molto. Una buona raccomandazione –

+0

sarebbe bello. ma questo plugin non ha funzionato per me: "non può risolvere il simbolo virtuale" nella riga 'net.virtualvoid.sbt.graph.Plugin.graphSettings ' – jsky

+0

@jsky Quella linea dovrebbe essere in /build.sbt invece di/project/build. sbt. È questo il caso nella tua build? O utilizzare l'approccio alternativo menzionato qui: https://github.com/jrudolph/sbt-dependency-graph#how-to-use –

Problemi correlati