2013-10-08 2 views
21

Я использую расширение JSON, которое основывается на игре Manduian's play-json 2.2-SNAPSHOT. Все отлично работало до сих пор, у меня есть проект, основанный на Scala-STM. SBT сообщает следующую проблему:Конфликтующие суффиксы перекрестной версии (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 

Есть ли шанс поковыряться, где эти два «конфликтующие» версии взялось? Я очень удивлен, что play-json должен зависеть от scala-stm ?!

Кроме того, есть ли способ убедить sbt закрыть ... вверх. Потому что, очевидно, 2.10 и 2.10.0 являются эквивалентными версиями.


EDIT: Это, как представляется, SBT 0,13 ошибка (и, вероятно, не имеет ничего общего с Play-JSON), потому что если я вернуться к 0.12.4, проект успешно обновляет и строит. Меня все еще интересует работа для sbt 0.13.

+0

Вместо того, чтобы использовать игру Manduian's play-json SNAPSHOT, почему бы просто не добавить эту зависимость - '" play% "play_2.10"% "2.1.0" 'за мой вопрос - http://stackoverflow.com/questions/19436069/add-play-json-library-to-sbt –

+0

Я не уверен, что это ошибка. Я тоже видел эту проблему после обновления, но потом обнаружил, что на самом деле существуют две разные версии используемой библиотеки. чтобы отключить его до предупреждения, которое я предполагаю. –

ответ

21

Вы можете обойти эту проблему путем удаления SCALA-СТМ с исключить

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

Не забудьте сделать sbt clean.

+0

Отлично, это сработало. Полезно знать о методе 'exclude'! –

+2

Где я могу добавить это в мое приложение' play'? Я предполагаю 'Build.scala', но где внутри из этого? –

+1

'Build.scala' для вновь созданного проекта (Play 2.1.x, так как 2.2 больше не использует Build.scala) содержит переменную' val appDependencies', которая содержит 'Seq' с зависимостями. Прямо внутри нее. – kompot

2

Обновлено Play2 2.2 - переход на SBT с 0.13.0 -> 0.12.4 не работал со мной, но исключая использование exclude ("org.scala-stm", "scala-stm_2.10.0") на ВСЕ зависящие от приложения зависимости. Я работал нормально - в любом случае, ни одна из моих зависимостей не должна иметь ничего общего с scala-stm.

+0

Так вы говорите, что у вас была такая же проблема с Play 2.2? –

+0

Точно. Проблема возникла, когда я переключался с Play2 2.1 на 2.2, до этого все было нормально с 0.12.4 и Play2 2.1 –

2

Если вы хотите, чтобы все библиотеки были втянуты в ваш проект SBT, вы можете использовать плагин SBT dependency graph.

Используя это, вы можете увидеть, почему scala-stm втягивается, а также проверять другие конфликтующие зависимости scala 2.10 и 2.11.

+0

Спасибо, у меня есть этот плагин, который теперь установлен на глобальном уровне и много используется. Хорошая рекомендация. –

+0

что было бы хорошо. но этот плагин не работал для меня: «невозможно разрешить символ виртуальный» в строке 'net.virtualvoid.sbt.graph.Plugin.graphSettings ' – jsky

+0

@jsky Эта строка должна быть в /build.sbt вместо/project/build. SBT. Это дело в вашей сборке? Или используйте альтернативный подход, упомянутый здесь: https://github.com/jrudolph/sbt-dependency-graph#how-to-use –

Смежные вопросы