Maven

您所在的位置:网站首页 pom文件modules Maven

Maven

2023-03-30 09:39| 来源: 网络整理| 查看: 265

前言继承(parent)聚合(modules)BOM使用jar传递覆盖参考

前言

maven有多模块和继承集中概念,还有新出来的bom。需要分开理解。

继承(parent)

继承是平日里项目主要使用的,一般定义一个主pom文件,pom中定义不同的依赖和版本。任意的子模块,都会进行一次parent模块的引用。例如,定义父模块:

com.xxxxxx-partpom1.0-SNAPSHOT xxx-part-demo ...

对于指定的子模块 xxx-part-demo,可以如下定义:

xxx-part com.xxx 1.0-SNAPSHOT ../xxx-part 4.0.0 xxx-part-demo

这样我们的子模块只需要定义下 artifactId 即可,剩下的都可以从 parent pom 中获取。包括:groupId,version,url,dependencyManagement,denpendcies,repositories,build等等。

注:其中relativePath元素不是必须的,指定后会优先从指定的位置查找父pom。

父POM是为了抽取统一的配置信息和依赖版本控制,方便子POM直接引用,简化子POM的配置。

聚合(modules)

具有模块的项目被称为多模块或聚合项目。模块是此POM列出并作为一组执行的项目。通过一个pom打包的项目可以将它们列为模块来聚合成一组项目进行构建,这些模块名是这些项目的相对目录。

org.xxxxxx-part2.0pom xxx-demo

其中modules不需要考虑顺序,maven会进行拓扑排序,是的依赖关系始终在依赖模块之前构建。

聚合(多模块)则是为了方便一组项目进行统一的操作而作为一个大的整体

BOM

dmavn定义的版本集合,可以解决相互兼容的jar包版本问题。不同的项目在依赖时,会发生循环依赖,各个版本不一致,而maven构件时,会采取maven dependency mediation方式,可能导致需要依赖的jar,由于上述操作被冲掉了。BOM本质上是一个普通的POM文件,区别是对于使用方而言,里面定义好类型版本即可。

com.xxxxxx-bom1.0pom UTF-8 UTF-8...

使用的时候,直接引入即可:

com.xxx xxx-bom ${version} pom import

如上,就引入了bom文件,后续需要任何的版本,只需要depenency直接引用就可以拿到版本信息了。需要特殊版本时,指定覆盖下。

使用

maven仅仅支持单继承,只有一个parent。对于其他项目的依赖,那么最好使用bom来实现了。

最佳路径:定义自己项目的主pom,引入各个第三方的bom文件,进行自己的开发工作。

jar传递覆盖

包版本优先级顺序如下:

当前项目 pom 直接声明的包版本parent 项目声明的包版本导入 POM (即 BOM 项目)声明的包版本,如果有多个导入按 import 顺序解析。依赖调解机制 可以在当前项目 pom 显示指定包版本,用于覆盖依赖的包版本如果在导入的多个 BOM 项目中相同包存在多个版本,则使用声明在先的 BOM 项目中指定的包版本

参考 Maven 的聚合(多模块)和 Parent 继承微服务中使用Maven BOM来管理你的版本依赖How to use BOM file with Maven?【转载】Maven中的BOM概念


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3