Java 这是使用enforcer插件强制执行特定Spring版本的正确方法吗?

Java 这是使用enforcer插件强制执行特定Spring版本的正确方法吗?,java,maven,maven-plugin,maven-enforcer-plugin,Java,Maven,Maven Plugin,Maven Enforcer Plugin,我希望使用的规则强制执行特定的Spring版本(3.1.2) 这是配置enforcer插件以实现这一目标的正确方法吗 <configuration> <rules> <bannedDependencies> <searchTransitive>true</searchTransitive> <excludes> <e

我希望使用的规则强制执行特定的Spring版本(3.1.2)

这是配置enforcer插件以实现这一目标的正确方法吗

<configuration>
    <rules>
        <bannedDependencies>
            <searchTransitive>true</searchTransitive>
            <excludes>
                <exclude>org.springframework</exclude>
            </excludes>
            <includes>
                <include>org.springframework:*:3.1.2</include>
            </includes>
        </bannedDependencies>
    </rules>
    <fail>true</fail>
    <failFast>true</failFast>
    <ignoreCache>true</ignoreCache>
</configuration>

由于
标记不理解
groupId:artifactId:version:type
符号,上述问题中的
bannedDependencies
片段不起作用。因此,不能使用通配符替换整个部分来传递
包含组中所有工件的所有版本

但是,通过使用maven,可以强制执行特定的依赖关系

给定给定工件的以下版本(按发布顺序):

3.0.0
3.0.1
3.1.0
3.2.0.发布
3.3.0

假设我们想告诉enforcer插件排除除
3.2.0之外的所有内容。发布
,那么唯一的方法是:

排除版本X,其中XDESIRED VERSION

上述情况实际上意味着:
排除所有版本X其中X!=所需版本

由于maven依赖项版本表示法不允许使用“not version”表示法,因此我们必须结合使用小于和大于表示法,如下所示:

(,3.2.0.RELEASE),(3.2.0.RELEASE),)

这意味着:
version<'3.2.0.RELEASE'或version>'3.2.0.RELEASE'

最后,工作原理的一个片段如下:

<bannedDependencies>
    <searchTransitive>true</searchTransitive>
    <excludes>
        <exclude>org.springframework:*:(,${spring.version}),(${spring.version},)</exclude>    
    </excludes>
</bannedDependencies>

符合事实的
org.springframework::(,${spring.version}),(${spring.version},)

由于
标记不理解
groupId:artifactId:version:type
符号,上述问题中的
banndedependencies
片段不起作用。因此,不能使用通配符替换整个部分来传递
包含组中所有工件的所有版本

但是,通过使用maven,可以强制执行特定的依赖关系

给定给定工件的以下版本(按发布顺序):

3.0.0
3.0.1
3.1.0
3.2.0.发布
3.3.0

假设我们想告诉enforcer插件排除除
3.2.0之外的所有内容。发布
,那么唯一的方法是:

排除版本X,其中XDESIRED VERSION

上述情况实际上意味着:
排除所有版本X其中X!=所需版本

由于maven依赖项版本表示法不允许使用“not version”表示法,因此我们必须结合使用小于和大于表示法,如下所示:

(,3.2.0.RELEASE),(3.2.0.RELEASE),)

这意味着:
version<'3.2.0.RELEASE'或version>'3.2.0.RELEASE'

最后,工作原理的一个片段如下:

<bannedDependencies>
    <searchTransitive>true</searchTransitive>
    <excludes>
        <exclude>org.springframework:*:(,${spring.version}),(${spring.version},)</exclude>    
    </excludes>
</bannedDependencies>

符合事实的
org.springframework::(,${spring.version}),(${spring.version},)

我真的不知道你希望听到什么?如果对你有用的话,我想没关系。我不认为你的使用有任何错误或权利。我想问题的关键是你必须排除和包括spring jar-是否有任何更干净的东西,比如限制到版本或其他东西,可以让它不那么冗长和容易出错(干巴巴的)?或者这是一个错误的插件,这些问题应该通过版本插件来解决?我真的不知道你期望听到什么?如果对你有用的话,我想没关系。我不认为你的使用有任何错误或权利。我想问题的关键是你必须排除和包括spring jar-是否有任何更干净的东西,比如限制到版本或其他东西,可以让它不那么冗长和容易出错(干巴巴的)?或者这可能是错误的插件,这些问题应该由版本插件解决?