代码之家  ›  专栏  ›  技术社区  ›  Xendar

带有非数字版本的Maven版本插件

  •  0
  • Xendar  · 技术社区  · 8 年前

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

    但是,该插件无法找到与主版本类似的依赖项的更新 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对版本格式做了一些假设,比如数字,所以它不理解 发展 作为有效版本,并跳过执行。

    最后,我希望能够使用 AllowMajorUpdate 选项,因为我不希望检查依赖项的新发布版本(我们从其他渠道获得信息),但这样我就不会得到我的 发展 更新看到。。。

    有没有办法让Maven在自己的比较规则之上检查这样的格式 发展 ?

    0 回复  |  直到 8 年前