在属性文件中设置Maven依赖项版本

时间:2014-09-10 21:51:51

标签: maven

我们有几个不同的应用程序可能会或可能不会一起交互。当它们一起交互时,由于第三方库版本不匹配(让它成为Spring或其他东西)而存在问题。

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

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

1 个答案:

答案 0 :(得分:0)

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

例如

您创建了单独的项目“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 管理。

相关问题