如何解决排除并重新导入具有不同版本的Maven依赖项
此示例是一个基于实际问题的假设方案。考虑一个从 pom.xml 文件中提取的块,如下所示。在这种情况下,我想从 artifact-a 中排除 artifact-b 依赖性,然后使用其他版本重新导入它。显然,排除的 artifact-b 版本不等于${product2.version}
。
<dependency>
<groupId>com.company.product1</groupId>
<artifactId>artifact-a</artifactId>
<version>${product1.version}</version>
<exclusions>
<exclusion>
<groupId>com.company.product2</groupId>
<artifactId>artifact-b</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.company.product2</groupId>
<artifactId>artifact-b</artifactId>
<version>${product2.version}</version>
</dependency>
因此,当对最终应用程序执行mvn install
命令时,我将只有 artifact-b ,其中${product2.version}
位于应用程序存储收集的jar的文件夹下从其依赖性。
这是我模块的预期行为,但这是否还意味着 artifact-a jar中的方法现在将使用 artifact-b jar进行调用${product2.version}
?如果是这样(由于目标存储库不包括排除的版本,这是我期望的),如果 artifact-b 中的调用方法在新版本中不同,会发生什么情况?它仅检查方法签名还是有其他因素可能导致编译/运行时错误?
解决方法
首先,如khmarbaise所说,排除是不必要的。
第二,增加库版本可能会导致各种问题。编译时的问题主要是方法签名或类丢失,但是在运行时,任何事情都可能发生,这取决于该库的源代码中所做的更改。
您只希望库的维护者设法使所有内容向后兼容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。