首页 > 解决方案 > 具有非数字版本的 Maven 版本插件

问题描述

我目前正在实施一项 Jenkins 工作,其目标是调用 Maven 版本:显示依赖项更新,以便为我的依赖项找到最新的可用增量更新。

但是,该插件无法找到主要版本的依赖项的更新develop。实际上,我在项目的依赖项中引用了其他内部项目,所有这些项目都从develop版本开始,直到我们分支到发布分支,我们将在其中引用所需的发布版本。

我有一个专门的 POM 来管理这些版本,它看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>groupid</groupId>
        <artifactId>root</artifactId>
        <version>develop-SNAPSHOT</version>
    </parent>
    <artifactId>external-dependencies</artifactId>
    <packaging>pom</packaging>
    <properties>
        <dep1.version>2.3.18</dep1.version>
        <dep1.majorversion>2.3</dep1.majorversion>
        <dep1.version-range>[${dep1.majorversion}.0,${dep1.majorversion}.999)</dep1.version-range>
        <dep2.version>develop.5</dep2.version>
        <dep2.majorversion>develop</dep2.majorversion>
        <dep2.version-range>[${dep2.majorversion}.0,${dep2.majorversion}.999)</dep2.version-range>
        <dep3.version>1.0.1</dep3.version>
        <dep3.majorversion>1.0</dep3.majorversion>
        <dep3.version-range>[${dep3.majorversion}.0,${dep3.majorversion}.999)</dep3.version-range>
        <versions.to.update>
            dep1.version,
            dep2.version
        </versions.to.update>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>dep1.group</groupId>
                <artifactId>dep1.artifact</artifactId>
                <version>${dep1.version}</version>
            </dependency>
            <dependency>
                <groupId>dep2.group</groupId>
                <artifactId>dep2.artifact</artifactId>
                <version>${dep2.version}</version>
            </dependency>
            <dependency>
                <groupId>dep3.group</groupId>
                <artifactId>dep3.artifact</artifactId>
                <version>${dep3.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <includeProperties>${versions.to.update}</includeProperties>
                    <allowMajorUpdates>false</allowMajorUpdates>
                    <properties>
                        <property>
                            <name>dep1.version</name>
                            <version>${dep1.version-range}</version>
                        </property>
                        <property>
                            <name>dep2.version</name>
                            <version>${dep2.version-range}</version>
                        </property>
                    </properties>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

因此,当我运行时mvn versions:display-property-updates -DallowMajorUpdates=false,结果会显示 的潜在更新dep1,但不会显示dep2. 但是,删除该allowMajorUpdates选项会给我返回有关开发的潜在更新。

我的理解是 Maven 对版本格式做了一些假设,例如数字,所以它不理解develop为有效版本并跳过执行。

最后,我希望能够使用该allowMajorUpdates选项,因为我宁愿不检查依赖项的新发布版本(我们从其他渠道获取信息),但是我不会看到我的develop更新。 ..

除了自己的比较规则之外,有没有办法让 Maven 检查像这样的格式develop

谢谢

标签: mavenmaven-versions-plugin

解决方案


推荐阅读