在Maven中,您可以为正在使用的依赖项定义Version Ranges。在开发一个与范围有多个依赖关系的项目时,我想运行一个循环遍历所有依赖版本排列的构建来编译和测试我的项目。
作为示例,我有以下pom.xml的摘录
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>[2.0,3.0)</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>[1.0,1.7)</version>
</dependency>
</dependencies>
看看这两个依赖项的目标版本,这些已经有56种组合。
+----+--------------+-------------------+
| # | commons-lang | commons-beanutils |
+----+--------------+-------------------+
| 1 | 2.0 | 1.0 |
| 2 | 2.1 | 1.2 |
| 3 | 2.2 | 1.3 |
| 4 | 2.3 | 1.4 |
| 5 | 2.4 | 1.4.1 |
| 6 | 2.5 | 1.5 |
| 7 | 2.6 | 1.6 |
| 8 | | 1.6.1 |
+----+--------------+-------------------+
我知道这会导致很长的运行时间,因为在有多个依赖项时会出现组合爆炸点。
这对我很感兴趣,因为当我从一个项目开始时,我倾向于给出某些版本的依赖项。现在,当该项目成为内部或公共使用的库时,我希望支持更广泛的依赖项,这样我就不会限制想要在其库版本中使用库的项目。
到目前为止,我还没有找到一种方法来解决这个问题。可能我的谷歌缺乏正确的话语。
我目前的尝试导致了一个pom.template,我预先处理它以使用特定版本填充版本范围。然后在项目的一个分支中使用生成的pom,并使用Jenkins或类似方法构建它。