Maven-versions-plugin:用于否定不遵循特定标签格式的版本的正则表达式

Posted

技术标签:

【中文标题】Maven-versions-plugin:用于否定不遵循特定标签格式的版本的正则表达式【英文标题】:Maven-versions-plugin: regex for negating versions which do not follow a specific tag format 【发布时间】:2020-08-25 12:01:18 【问题描述】:

我将maven-versions-pluginsetProperties 目标一起使用。我定义了一个 ruleset 来比较当前属性版本与包含 git 分支名称(一个 git 标记)的可用版本,并具有以下格式:<number>.<number>.<number>-<branch_name>.<number>例如,如果分支是 dev我想匹配像 1.29.0-dev.5 这样的版本,并忽略像 1.28.0-release.31.8.0-prere10010.1 这样的任何其他标签。 该规则要求指定要忽略的版本 - 因此所有不属于 <number>.<number>.<number>-dev.<number> 形式的版本都应被忽略。 我已经尝试了几个正则表达式,但没有达到预期的结果 - 所有版本都在有效版本列表中,以便与当前版本进行比较

<ruleset comparisonMethod="maven"
     xmlns="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0
http://mojo.codehaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd">
<rules>
    <rule groupId="com.abc.de" comparisonMethod="maven">
        <ignoreVersions>
            <ignoreVersion type="regex">(?!^[((\d*)\.(\d*)\.(\d*)\-dev\.(\d*))]$)</ignoreVersion>
            <ignoreVersion type="regex">null</ignoreVersion>
        </ignoreVersions>
    </rule>
</rules>

`

您能帮忙编写正确的正则表达式吗?

【问题讨论】:

您也可以匹配数字和点部分,后跟连字符,然后断言右边不是dev. 例如^\d+\.\d+\.\d+-(?!dev\.).*$ regex101.com/r/ttZ4nc/1 【参考方案1】:

尝试使用负正向查找,然后捕获字符串的其余部分,以防 Maven 正在寻找完全匹配:

^(?!\d+\.\d+\.\d+-dev\.\d+).*$  

【讨论】:

以上是关于Maven-versions-plugin:用于否定不遵循特定标签格式的版本的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

使用maven发布多个项目

对比Java学Kotlin枚举

对比Java学Kotlin枚举

对比Java学Kotlin枚举

0/1 python的分类数据是/否-这是正确的方法吗?

带有 FreeRTOS 的 STM HAL,是/否/也许?