我有两个依赖项,由于要求我无法更改。两者都在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?
答案 0 :(得分:1)
解决这个问题的一种疯狂方法是创建两个独立的maven工件,其中一个引用另一个:
Scala version 1 Scala Version 2
| |
\ / \ /
Art1fact 1 --------> Artifact 2
现在,在Artifact 1中,使用Maven Shade Plugin创建一个jar-with-dependencies(有关详细信息,请参阅Maven-Assembly-Plugin)using class relocation(例如,将所有类从scala。*映射到old .scala。*)。重要的是,Artifact 2只会引用Artifact 1的着色版本,因此省略了Scala依赖。
(ProGuard会让你获得类似的结果)