java maven - 覆盖另一个依赖项的版本

时间:2013-06-24 11:36:33

标签: java scala maven intellij-idea dependencies

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

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

一个依赖项是添加到项目的jar文件库,而另一个依赖项是maven依赖项。

问题是两者都需要scala依赖,一个版本为2.8.2,一个版本为2.10.2。两者都不能与其他版本号一起使用。

底线是:如何在jar文件2.8.2中设置maven依赖关系以使用2.10.2?

1 个答案:

答案 0 :(得分:1)

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

Scala version 1        Scala Version 2
      |                    |
     \ /                  \ /
  Art1fact 1 --------> Artifact 2

现在,在Artifact 1中,使用Maven Shade Plugin创建一个jar-with-dependencies(有关详细信息,请参阅Maven-Assembly-Pluginusing class relocation(例如,将所有类从scala。*映射到old .scala。*)。重要的是,Artifact 2只会引用Artifact 1的着色版本,因此省略了Scala依赖。

ProGuard会让你获得类似的结果)