java - 如何在java中使用多个版本的依赖关系进行构建

标签 java

我想让我的项目支持一个依赖项的多个版本。这种依赖关系可能与 API 不兼容,那么最简单和最佳的做法是什么?有没有办法在运行时检测版本,并​​控制是否编译使用依赖项新功能的代码段。

最佳答案

我假设您的意思是最终用户可以在其类路径中添加 JAR 的多个版本中的任何一个,并且您希望能够使用他们提供的任何版本。

有多种方法可以做到这一点。您可以通过查看 list 目录来检测版本是否是使用 Maven 或类似版本构建的。另一种方法是编写多个适配器,针对您所知道的每个版本系列编写一个适配器,并测试哪个版本似乎可以工作。

您可以在 Maven 中构建它,方法是为每个版本创建一个模块,并可选地依赖于该模块支持的版本。您创建一个具有唯一名称的类,例如名称中包含您支持的版本。这将为您提供 N 个具有少量类的模块。然后,您可以创建一个包含所有这些类的模块,并在它们之间进行搜索以找到第一个似乎有效的模块。显然,如果您知道自己支持哪些版本,这比反复试验要好,但并不总是可行。

<小时/>

如果您想一次支持多个版本,而不使用自定义类加载器,您可以使用像 jarjar 这样的工具来重命名多个支持版本的包,并将其提供在所有支持版本的 uber JAR 中。

关于java - 如何在java中使用多个版本的依赖关系进行构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27523075/

相关文章:

java - 不使用 while(true) 从文件反序列化多个对象

java - Java 库的版本信息,可在运行时访问

java - 使 log4j 可加性等于 true 或 false 的结果是什么?

java - 面向 REST Web 服务的授权 header OAuth1

java - j2me中的HTML文本提取

一旦按下按钮,Java 键事件就不会执行

Java,关闭FileWriter更改文件MD5值

java - Google AppEngine LogService出现OutOfMemoryError

Java 日历返回不同的日期

java - Spring MVC 中的 RedirectView 不起作用