Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven如何处理具有不同组id的相同jar_Java_Maven - Fatal编程技术网

Java maven如何处理具有不同组id的相同jar

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

我正在使用不同的库,这些库在不同版本中引用同一个库,并且具有不同的组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,我们没有相同的字节码,因此具有不同内容的相同类将位于类路径中


我说得对吗?如果是的话,maven能警告我并防止这样的问题吗?

不,对于maven来说,这些是不同的工件,你可能会遇到麻烦。在类路径上拥有同一类的多个版本不是一个好主意。

不,对于Maven来说,这些是不同的工件,您可能会遇到麻烦。在类路径上具有同一类的多个版本不是一个好主意。

您可以使用强制规则


如果类名出现在多个jar中,则允许您中断生成。

您可以使用enforcer规则


如果一个类名出现在多个jar中,则允许您中断构建。

大多数IDE都具有查看所有依赖项及其版本的功能。但是如果类路径上的多个jar中存在给定类,IDE不会发出警告,因此,只有当问题已知时,这才有帮助。大多数IDE都具有查看所有依赖项及其版本的功能。但是,如果给定类在类路径上的多个JAR中存在,IDE不会发出警告,因此只有当问题已知时,这才有帮助。确定,但是为了防止这种情况发生,我必须手动搜索整个maven依赖关系树,如果一些间接引用的工件具有相同的名称但不同的组类型,那么这是不应该发生的(但确实发生了)。Java模块系统解决了这个问题,但大多数项目还没有使用它。当然,但为了防止出现这种情况,我必须手动搜索整个maven依赖关系树。如果一些间接引用的构件具有相同的名称,但具有不同的组类型,则不应该发生这种情况(但确实发生了)。Java模块系统解决了这个问题,但大多数项目还没有使用它。谢谢,它起作用了(没有为bcmail找到重复的类,也没有为stax api找到重复的类)谢谢,它起作用了(没有为bcmail找到重复的类,也没有为stax api找到重复的类)