4

由于要求,我有两个无法更改的依赖项。两者都在 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。两者都不能与其他版本号一起使用。

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

4

1 回答 1

1

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

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

现在,在 Artifact 1 中,使用Maven Shade Plugin使用类重定位(例如,将所有类从 scala.* 映射到 old.scala.*)创建一个 jar-with-dependencies(详见Maven -Assembly-Plugin )。重要的部分是 Artifact 2 只会引用 Artifact 1 的阴影版本,因此省略了 Scala 依赖项。

ProGuard会让你达到类似的效果)

于 2013-06-24T12:18:04.263 回答