Java maven如何处理具有不同组id的相同jar
我正在使用不同的库,这些库在不同版本中引用同一个库,并且具有不同的组ID(重新定位)。所以maven假设这些是不同的库,并将它们都放在类路径中 但是包名没有改变,因此maven中存在具有相同包名的相同类 例如,org.bouncycastle:bcmail-jdk14-1.38与org.bouncycastle:bcmail-jdk14-138的情况就是如此。但由于两个版本都是相同的,我不认为会有麻烦 但是对于javax.xml.stream:stax-api-1.0-2和stax:stax-api-1.0.1,我们没有相同的字节码,因此具有不同内容的相同类将位于类路径中Java maven如何处理具有不同组id的相同jar,java,maven,Java,Maven,我正在使用不同的库,这些库在不同版本中引用同一个库,并且具有不同的组ID(重新定位)。所以maven假设这些是不同的库,并将它们都放在类路径中 但是包名没有改变,因此maven中存在具有相同包名的相同类 例如,org.bouncycastle:bcmail-jdk14-1.38与org.bouncycastle:bcmail-jdk14-138的情况就是如此。但由于两个版本都是相同的,我不认为会有麻烦 但是对于javax.xml.stream:stax-api-1.0-2和stax:stax-a
我说得对吗?如果是的话,maven能警告我并防止这样的问题吗?不,对于maven来说,这些是不同的工件,你可能会遇到麻烦。在类路径上拥有同一类的多个版本不是一个好主意。不,对于Maven来说,这些是不同的工件,您可能会遇到麻烦。在类路径上具有同一类的多个版本不是一个好主意。您可以使用强制规则
如果类名出现在多个jar中,则允许您中断生成。您可以使用enforcer规则
如果一个类名出现在多个jar中,则允许您中断构建。大多数IDE都具有查看所有依赖项及其版本的功能。但是如果类路径上的多个jar中存在给定类,IDE不会发出警告,因此,只有当问题已知时,这才有帮助。大多数IDE都具有查看所有依赖项及其版本的功能。但是,如果给定类在类路径上的多个JAR中存在,IDE不会发出警告,因此只有当问题已知时,这才有帮助。确定,但是为了防止这种情况发生,我必须手动搜索整个maven依赖关系树,如果一些间接引用的工件具有相同的名称但不同的组类型,那么这是不应该发生的(但确实发生了)。Java模块系统解决了这个问题,但大多数项目还没有使用它。当然,但为了防止出现这种情况,我必须手动搜索整个maven依赖关系树。如果一些间接引用的构件具有相同的名称,但具有不同的组类型,则不应该发生这种情况(但确实发生了)。Java模块系统解决了这个问题,但大多数项目还没有使用它。谢谢,它起作用了(没有为bcmail找到重复的类,也没有为stax api找到重复的类)谢谢,它起作用了(没有为bcmail找到重复的类,也没有为stax api找到重复的类)