3

在 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 或类似工具构建它。

4

0 回答 0