4

我正在使用 Maven 版本插件的 update-properties 目标来更新多个项目的 pom.xml 中的属性。(https://www.mojohaus.org/versions-maven-plugin/update-properties-mojo.html)。我想要最新版本的属性依赖项。

现在,有一些版本错误的二进制文件。我希望我的代码忽略这些版本。为此,我创建了我的“rules.xml”文件。我想将它作为 -DrulesUri 参数提供给 update-properties 目标。

我已经尝试在项目的 pom.xml 文件中指定此 rules.xml 文件,如(Maven 版本插件:从 maven 依赖项中引用 rule.xml?)所示。这是因为插件可以成功忽略 rules.xml 中的指定版本。所以,rules.xml 文件没有问题。但是,这在我的情况下没有用,因为涉及的项目很多,我无法更新每个项目的 pom.xml。

rulesUri 属性的文档说“ruleSet 文件的 URI,其中包含控制如何比较版本号的规则。URI 可以是 Wagon URI 或类路径 URI(例如 classpath:///package/sub/package/rules. xml)。” 这么多文档对我没有帮助。我想要一个关于如何在 -DrulesUri 参数中指定 rules.xml 文件的示例。我尝试将 rules.xml 文件指定为本地相对路径/绝对路径。但是,update-properties 目标似乎无法识别规则,只是在没有 -DrulesUri 参数的情况下类似于执行。我尝试阅读https://maven.apache.org/wagon/以了解 Wagon URI。但是,我没有找到一种简单的方法将我的 rules.xml 上传到某个地方,然后使用这个 Wagon URI 在 -DrulesUri 中指定。

这是我的 rules.xml 文件:-

<?xml version="1.0" encoding="UTF-8"?>
<ruleset xmlns="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" comparisonMethod="maven" 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">25243.*.*</ignoreVersion>
    </ignoreVersions>
    <rules>
    </rules>
</ruleset>
4

1 回答 1

2

利用-Dmaven.version.rules

例子:

mvn versions:display-dependency-updates -Dmaven.version.rules=file:///$HOME/.m2/rules.xml

来自AbstractVersionsReport.java源代码:

    /**
     * URI of a ruleSet file containing the rules that control how to compare
     * version numbers. The URI could be either a Wagon URI or a classpath URI
     * (e.g. <code>classpath:///package/sub/package/rules.xml</code>).
     *
     * @since 1.0-alpha-3
     */
    @Parameter( property = "maven.version.rules" )
    private String rulesUri;
于 2019-06-24T07:27:43.883 回答