有没有办法设置我们跨模块使用的 BOM 版本?

Is there a way to set the version of a BOM we are using across modules?

我们有很多使用相同 bom 的模块。

是否有工具可以将它们全部升级到最新(或特定)版本?

有没有办法防止在发布中使用 SNAPSHOT bom?

要更新版本,这对我来说很顺利:

我的 pom 和 bom

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <java.version>1.7</java.version>
            <spring.version>3.2.6.RELEASE</spring.version>
        </properties>

        <dependencyManagement>
            <dependencies>

                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-framework-bom</artifactId>
                    <version>${spring.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>

            </dependencies>
        </dependencyManagement>

with mvn versions:update-properties -Dincludes=org.springframework:spring-framework-bom 在这种情况下结果是

[INFO] --- versions-maven-plugin:2.2:update-properties (default-cli) @ abc ---
[INFO] artifact org.springframework:spring-framework-bom: checking for updates from nexus-dev
[INFO] artifact org.springframework:spring-framework-bom: checking for updates from nexus
[INFO] Updated ${spring.version} from 3.2.6.RELEASE to 4.3.4.RELEASE

enforce 插件当前无法检测 SNAPSHOT 版本到依赖管理设置中,但在依赖管理部分声明托管依赖时它可以工作。如果在 bom 中存在具有快照版本的托管依赖项并且它的依赖项在子 pom 输出依赖项管理部分中声明,它将激活规则。但是对于像springframework这样的thirthparty dependency bom artifact, by example, is very weard happen.