Java 阴影依赖项';Maven中的依赖关系

Java 阴影依赖项';Maven中的依赖关系,java,maven,dependencies,dependency-management,maven-shade-plugin,Java,Maven,Dependencies,Dependency Management,Maven Shade Plugin,假设存在一个库x.y.z-1.0,x.y.z-2.0,x.y.z-3.0,分别使用a.b.c-1.0,a.b.c-2.0,a.b.c-3.0 我目前正在编写另一个库(com.mysdk),它使用x.y.z-2.0。但是我没有检查我的库与x.y.z-1.0和x.y.z-3.0的兼容性。因此,我将把x.y.z-2.0着色到com.mylibrary.shaded.x.y.z-2.0。但是,调查后,a.b.c-2.0将不会被遮盖。 所以情况看起来就像下面的图片。 当com.mysdk的用户同时使用a.

假设存在一个库
x.y.z-1.0
x.y.z-2.0
x.y.z-3.0
,分别使用
a.b.c-1.0
a.b.c-2.0
a.b.c-3.0

我目前正在编写另一个库(
com.mysdk
),它使用
x.y.z-2.0
。但是我没有检查我的库与
x.y.z-1.0
x.y.z-3.0
的兼容性。因此,我将把
x.y.z-2.0
着色到
com.mylibrary.shaded.x.y.z-2.0
。但是,调查后,
a.b.c-2.0
将不会被遮盖。 所以情况看起来就像下面的图片。
com.mysdk
的用户同时使用
a.b.c-1.0
时,我的问题就出现了。我无法使项目使用指定的
a.b.c-1.0
,相反,它使用的是sdk中的
a.b.c-2.0

您描述的情况正是您不应该隐藏其他库的原因。这将防止用户覆盖依赖项(如果需要)。是的,用户可能无法使用您的库,但您在编写库时考虑了版本2.X(功能等)。。。是的,不可能使用版本1.X,因为版本2.X已被着色…您描述的情况正是您不应该着色其他库的原因。这将防止用户覆盖依赖项(如果需要)。是的,用户可能无法使用您的库,但您在编写库时考虑了版本2.X(功能等)。。。是的,它将不可能使用版本1.X,因为版本2.X已被着色。。。。