Maven |
您所在的位置:网站首页 › pom文件modules › Maven |
前言继承(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会进行拓扑排序,是的依赖关系始终在依赖模块之前构建。 聚合(多模块)则是为了方便一组项目进行统一的操作而作为一个大的整体 BOMdmavn定义的版本集合,可以解决相互兼容的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 |