java maven-重写另一个依赖项的版本

java maven-重写另一个依赖项的版本,java,scala,maven,intellij-idea,dependencies,Java,Scala,Maven,Intellij Idea,Dependencies,我有两个依赖项,由于需求,我无法更改它们。两者都在maven中使用scala依赖项 <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.8.2</version> </dependency> org.s

我有两个依赖项,由于需求,我无法更改它们。两者都在maven中使用scala依赖项

  <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.8.2</version>
  </dependency>

org.scala-lang
scala图书馆
2.8.2
一个依赖项是添加到项目中的jar文件库,而另一个依赖项是maven依赖项

问题是两者都需要scala依赖关系,一个版本为2.8.2,另一个版本为2.10.2。两者都不适用于其他版本号


底线是:如何将maven依赖项设置为使用2.10.2,而将jar文件设置为2.8.2

解决这个问题的一个疯狂方法是创建两个独立的maven工件,其中一个引用另一个:

Scala version 1        Scala Version 2
      |                    |
     \ /                  \ /
  Art1fact 1 --------> Artifact 2
现在,在工件1中,使用创建一个具有依赖项的jar(有关详细信息,请参阅)(例如,将所有类从scala.*映射到old.scala.*)。重要的一点是,工件2将只引用工件1的着色版本,因此匹配Scala依赖项


(将让您获得类似的结果)

您是否正在尝试使用maven构建play 2框架Web应用程序?不,我没有尝试实现这一点。我需要的两个依赖项只是一些基本库,但我需要它们,并且我不能更改它们的代码。它们都需要scala库,但使用不同的版本号。问题是我如何做到这一点。我认为如果两个库都是编译依赖项,而不将较旧的库从scala 2.8移植到scala 2.10,这是不可能的;这是因为scala不是二进制兼容的。我不是scala专家,希望你能找到更好的答案,同时你也能得到我的+1。这听起来需要做很多工作,需要我不断修改罐子,对吗?随着图书馆的不断变化,这似乎是一项艰巨的工作?“这听起来像是一项艰巨的工作”没错,但如果这不是真的,你将找不到解决方案。但我不认为这会随着时间的推移给你带来额外的工作。当库发生更改时,无论是否使用此解决方案,您都必须更改代码。只是不要使用普通的旧jar。使用Maven或不使用Maven,混合使用这两种方法总是会给您带来配置上的麻烦