【问题标题】:Maven "versions" plugin - how to exclude alpha/beta versions from response?Maven“版本”插件 - 如何从响应中排除 alpha/beta 版本?
【发布时间】:2012-04-19 14:59:30
【问题描述】:

我有关于插件版本的问题。

当它生成带有目标的报告时:

mvn versions:display-dependency-updates

它建议有很多具有 beta 或 alpha 版本的库。

 org.hibernate:hibernate-validator ......... 4.2.0.Final -> 4.3.0.Beta1

问题在于,如果此插件的目标是显示每个依赖项的最新版本,我不想将 beta/alpha 版本用于生产代码。但我也不想手动搜索最后一个稳定版本。

我尝试了 'comparisonMethod' 选项:numeric、maven 等。没有任何成功。

对于插件“版本”显示最新可用版本的依赖项有什么想法,但不包括 beta/alpha?

【问题讨论】:

    标签: maven version maven-plugin dependency-management


    【解决方案1】:

    您可以像这样配置版本插件:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
            <rulesUri>someUrl</rulesUri>
        </configuration>
    </plugin>
    

    someUrl 也可以是文件 URL。规则文件的语法在http://www.mojohaus.org/versions-maven-plugin/version-rules.html 中给出,它可能包含如下内容:

    <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">
      <ignoreVersions>
        <ignoreVersion type="regex">.*-beta.</ignoreVersion>
        <ignoreVersion type="regex">.*_ALPHA</ignoreVersion>
      </ignoreVersions>
    </ruleset>
    

    【讨论】:

    • 很好的解释。我终于用这个例子更新了我的通用 POM。 This commit 展示了实现。
    • 可惜花了一年多的时间才让所有人注意到。
    • 以下 ignoreVersion 规则删除了大多数 alpha、beta 等内容:&lt;ignoreVersion type="regex"&gt;.*[-_\.](alpha|Alpha|ALPHA|b|beta|Beta|BETA|rc|RC|M|EA)[-_\.]?[0-9]*&lt;/ignoreVersion&gt;
    • 这是一个URI,所以使用文件URI:&lt;rulesUri&gt;file:///${project.basedir}/maven-version-rules.xml&lt;/rulesUri&gt;
    • 我有一个属性 &lt;versions-rules&gt;file:///${project.basedir}/maven-version-rules.xml&lt;/versions-rules&gt; 在父母和 &lt;versions-rules&gt;file:///${project.basedir}/../maven-version-rules.xml&lt;/versions-rules&gt; 在所有孩子。这样,我只需要在 parent 中配置插件。
    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 2019-09-17
    • 2016-01-22
    • 1970-01-01
    • 2017-03-28
    • 2014-07-11
    • 2018-09-02
    相关资源
    最近更新 更多