在 Maven 中,您可以为正在使用的依赖项定义版本范围。在开发具有多个范围的依赖项的项目时,我想运行一个循环遍历依赖项版本的所有排列的构建,以编译和测试我的项目。
例如,我有以下 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 |
+----+--------------+-------------------+
我知道这会导致运行时间很长,因为当有多个依赖项时会出现组合爆炸点。
这对我很感兴趣,因为当我开始一个项目时,我倾向于提供某些版本的依赖项。现在,当该项目变成供内部或公共使用的库时,我想支持更广泛的依赖项,这样我就不会限制想要在他们选择的库版本中使用该库的项目。
到目前为止,我还没有找到用 Maven 解决这个问题的方法。可能我的 google-fu 缺少正确的词。
我目前的尝试导致了一个 pom.template ,我对其进行了预处理以用特定版本填充版本范围。然后在项目的一个分支中使用生成的 pom,并使用 Jenkins 或类似工具构建它。