【问题标题】:Set Maven dependency versions in properties file在属性文件中设置 Maven 依赖版本
【发布时间】:2021-03-01 02:43:09
【问题描述】:

我们有几个不同的应用程序,它们可能会或可能不会相互作用。当它们一起交互时,由于第三方库版本(让它是 Spring 或其他)不匹配而出现了问题。

这些应用程序的 pom 文件是分开的,但为了解决上述问题,我们希望它们使用相同版本的第三方库。最简单的方法是在公共属性文件中指定版本,然后让各自的 pom.xml 从属性文件中读取版本。

通常我习惯将版本指定为父 pom 中的属性,然后让模块 pom 从那里读取它。有没有办法让 pom.xml 读取属性文件以读取版本?

【问题讨论】:

标签: maven


【解决方案1】:

一些项目,例如spring-cloud 和 spring-boot,在“BOM”(材料清单)中表达它们的“发布序列”(一组依赖项及其已知可以很好地协同工作的版本)。 BOM 只不过是一个只有一个 dependencyManagement 部分的 POM,其中列出了所有这些依赖项以及正确的版本。然后将该 BOM 包含在每个项目的 POM 中,该 POM 应在其 dependencyManagement 部分中遵循这些依赖项/版本,范围为“导入”。

例如

您创建了单独的项目“my-bom”,其中只包含一个像这样的 pom:

<project>
    
    <groupId>your.organication.program</groupId>
    <artifactId>my-bom</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.whatever</groupId>
                <artifactId>somedependency</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>com.whatever</groupId>
                <artifactId>someotherdependency</artifactId>
                <version>4.5.6</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

然后你在每个项目中包含应该与这些依赖项/版本保持一致的内容:

groupId>your.organication.program.project</groupId>
    <artifactId>some-project</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>your.organisation.program</groupId>
                <artifactId>my-bom</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
    </dependencyManagement>

在项目中,有效使用的依赖项仍必须在依赖项部分中引用,但没有版本 - 版本由 BOM 管理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 2020-07-26
    • 2019-01-24
    • 2020-11-02
    • 1970-01-01
    相关资源
    最近更新 更多