Scala 2.11 + Neo4j - Cypher编译器的parboiled依赖

5

我想将我的Scala 项目升级到语言的2.11.1 版本。

当我更新了build.sbt 文件并尝试编译项目时,出现了以下错误信息:

[error] Modules were resolved with conflicting cross-version suffixes in {file:somePathTo}SomeProject:
[error]    org.parboiled:parboiled-scala _2.11, _2.10
java.lang.RuntimeException: Conflicting cross-version suffixes in: org.parboiled:parboiled-scala
    at scala.sys.package$.error(package.scala:27)
    at sbt.ConflictWarning$.processCrossVersioned(ConflictWarning.scala:47)
    at sbt.ConflictWarning$.apply(ConflictWarning.scala:30)
    at sbt.Classpaths$$anonfun$60.apply(Defaults.scala:1090)
    at sbt.Classpaths$$anonfun$60.apply(Defaults.scala:1090)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
    at sbt.std.Transform$$anon$4.work(System.scala:64)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
    at sbt.Execute.work(Execute.scala:244)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
[error] (*:update) Conflicting cross-version suffixes in: org.parboiled:parboiled-scala

起初,我认为这是因为我依赖于Spray库,该库还依赖于parboiled,所以我在他们的用户列表上发布了一个问题:https://groups.google.com/forum/#!topic/spray-user/XY7ceh7a9t0,他们建议我尝试查看项目的依赖关系图表。
似乎parboiled不仅被Spray库使用,还被Cypher编译器使用(我依赖于Spraing Data Neo4j所以才要使用它)。 2.02.1版本都在使用Scala 2.10parboiled
以下是Neo4j Cypher compiler的两个版本链接:http://mvnrepository.com/artifact/org.neo4j/neo4j-cypher-compiler-2.0/2.0.3 http://mvnrepository.com/artifact/org.neo4j/neo4j-cypher-compiler-2.1/2.1.2 我在想是否有可能/被认为是安全的,从我的类路径中删除对此版本parboiled库(http://www.scala-sbt.org/0.13.5/docs/Detailed-Topics/Library-Management.html#exclude-transitive-dependencies)的传递依赖关系,并仅添加2.11
此外,如果有Neo4j团队的人能告诉我是否有计划发布针对Scala 2.11编译的parboiled Cypher编译器版本,我将不胜感激。
以下是我build.sbt文件的依赖部分,只是为了完整起见:
libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-actor" % AkkaVersion,
  "com.typesafe.akka" %% "akka-slf4j" % AkkaVersion,
  "com.typesafe.akka" %% "akka-testkit" % AkkaVersion % "test",
  "com.typesafe.akka" %% "akka-persistence-experimental" % AkkaVersion,
  "io.spray" %% "spray-can" % SprayVersion,
  "io.spray" %% "spray-routing" % SprayVersion,
  "io.spray" %% "spray-testkit" % SprayVersion % "test",
  "io.spray" %% "spray-json" % SprayJsonVersion,
  "ch.qos.logback" % "logback-classic" % LogbackVersion,
  "org.specs2" %% "specs2" % Specs2Version,
  "org.springframework.data" % "spring-data-neo4j" % SDNVersion,
  "org.springframework.data" % "spring-data-neo4j-rest" % SDNVersion,
  "javax.validation" % "validation-api" % ValidationAPIVersion,
  "com.github.nscala-time" %% "nscala-time" % NscalaTimeVersion,
  "org.neo4j" % "neo4j-kernel" % Neo4jVersion % "test" classifier "tests",
  "org.mockito" % "mockito-all" % MockitoVersion,
  "com.typesafe.scala-logging" %% "scala-logging" % ScalaLoggingVersion,
  "io.kamon" %% "kamon-core" % KamonVersion,
  "io.kamon" %% "kamon-spray" % KamonVersion,
  "io.kamon" %% "kamon-statsd" % KamonVersion,
  "org.aspectj" % "aspectjweaver" % AspectjVersion
)
2个回答

3

我们肯定有升级到较新版Scala以及更新如parboiled的依赖项的计划。然而,Neo4j是一个复杂的数据库系统,具有大量的依赖项,任何这样的更改都需要进行重大的迁移和测试工作。因此,目前还没有关于此类更改的预计时间到达(ETA)。


谢谢你的回答,至少我知道目前没有计划 :) - Andna
这已经在计划中了,只是不确定它会在什么时候出现! :) - Chris Leishman
一些。随着转向Java 8,这变得更加重要。我希望在夏季看到Java 8和Scala 2.11有所发展。 - Chris Leishman
一年过去了,仍然没有Scala 2.11的支持。此外,它也没有在任何地方有记录,所以所有使用嵌入模式的人都需要通过汗水、鲜血和眼泪自己发现。Neo4j是否变成了一个缓慢的庞然大物?不能跟上最新和最伟大的技术(例如Scala 2.11已经超过两年了)吗? - Dima Gutzeit

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接