Maven"版本"插件 - 如何从响应中排除alpha/beta版本?

Iva*_*ayo 23 version dependency-management maven-plugin maven

我有一个关于插件版本的问题.

当它生成一个目标报告时:

mvn versions:display-dependency-updates
Run Code Online (Sandbox Code Playgroud)

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

 org.hibernate:hibernate-validator ......... 4.2.0.Final -> 4.3.0.Beta1
Run Code Online (Sandbox Code Playgroud)

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

我尝试了'comparisonMethod'选项:数字,maven等.没有任何成功.

插件"版本"的任何想法,以显示最新的可用版本的依赖项,但不包括beta/alpha?

Mic*_*fel 18

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

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <rulesUri>someUrl</rulesUri>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

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>
</rules>
Run Code Online (Sandbox Code Playgroud)

  • 以下ignoreVersion规则删除了大多数alpha,beta等内容:`<ignoreVersion type ="regex">.*[-_ \.](alpha | Alpha | ALPHA | b | beta | Beta | BETA | rc | RC | M | EA)[-_ \.] [0-9]*</ ignoreVersion>` (8认同)
  • 这是一个URI,因此请使用文件URI:`&lt;rulesUri&gt; file:/// $ {project.basedir} /maven-version-rules.xml &lt;/ rulesUri&gt;` (4认同)
  • 很好的解释.我终于使用这个例子更新了我的常见POM.[this commit](https://github.com/jjzabkar/jjz-base-pom/commit/faac44c8a6ca0831fcdd89459628c77363045bb1)显示了实现. (3认同)
  • 我在父级中有一个属性 `&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;` 在所有子项中。这样,我只需要在父级中配置插件。 (3认同)
  • 一个人花了一年多的时间才注意到的耻辱。 (2认同)
  • 我建议 `&lt;rulesUri&gt;${project.baseUri}/maven-version-rules.xml&lt;/rulesUri&gt;` 和 `&lt;ignoreVersion type="regex"&gt;(?i).*[-_\.](alpha| b|beta|rc|m|ea)[-_\.]?[0-9]*&lt;/ignoreVersion&gt;` 不区分大小写。 (2认同)