Maven 扁平化插件:解决依赖性bom管理而不继承
我为此问题创建了一个示例项目: 给出了以下项目结构:Maven 扁平化插件:解决依赖性bom管理而不继承,maven,flatten-maven-plugin,Maven,Flatten Maven Plugin,我为此问题创建了一个示例项目: 给出了以下项目结构: foo build作为所有模块的父级 foo-module-a作为子模块 foo-module-b作为子模块 foo-module-c作为子模块 foo依赖项作为bom 我在所有模块中使用了Flatte maven插件和属性revision,用于CI友好的构建: stack.overflow 富奥大厦 ${revision} 聚甲醛 0.1-1快照 父级(foo build)管理一个外部依赖项: 外物 在父级中管理的模块 1.2.3
- foo build作为所有模块的父级
- foo-module-a作为子模块
- foo-module-b作为子模块
- foo-module-c作为子模块
- foo依赖项作为bom
revision
,用于CI友好的构建:
stack.overflow
富奥大厦
${revision}
聚甲醛
0.1-1快照
父级(foo build)管理一个外部依赖项:
外物
在父级中管理的模块
1.2.3
bom(foo依赖项)管理foo依赖项:
堆栈溢出
foo-module-a
${revision}
堆栈溢出
foo-module-b
${revision}
堆栈溢出
foo-module-c
${revision}
我希望bom的扁平pom只包含已解析的foo依赖项,而不包含由父级管理的依赖项(foo构建),如下所示:
堆栈溢出
foo-module-a
0.1-1快照
堆栈溢出
foo-module-b
0.1-1快照
堆栈溢出
foo-module-c
0.1-1快照
您必须如何配置FlatteMaven插件才能实现这一点
我已经尝试了bom
,但是展平的pom无法解析版本:
堆栈溢出
foo-module-a
${revision}
堆栈溢出
foo-module-b
${revision}
堆栈溢出
foo-module-c
${revision}
使用以下配置
去除
决定
展平pom包含父级的托管依赖项:
堆栈溢出
foo-module-a
0.1-1快照
堆栈溢出
foo-module-b
0.1-1快照
堆栈溢出
foo-module-c
0.1-1快照
外物
在父级中管理的模块
1.2.3
将方法更改为更以客户为中心会更简单:
/pom.xml
)
- 仅使用依赖项管理部分中的
依赖项foo-*
- 带有单个foo build模块的模块列表(将被扁平化插件截断)
- 通用项目属性(将被扁平化插件截断)
/foo-build/pom.xml
)
- 依赖项管理部分中的第三方依赖项
- 具有项目所需的特定于生成的属性或配置文件(如果有)
/foo module-*/pom.xml
),则可以使用相对路径
指向父模块,例如:
<parent>
<groupId>stack.overflow</groupId>
<artifactId>foo-build</artifactId>
<version>${revision}</version>
<relativePath>../foo-build/pom.xml</relativePath>
</parent>
<artifactId>foo-module-a</artifactId>
堆栈溢出
富奥大厦
${revision}
../foo build/pom.xml
foo-module-a
这样,您将收到:
- 按照您的意愿清除foo依赖项李>
依赖项的零拷贝粘贴李>foo-*
- 在foo-build中灵活构建您喜欢的任何内容和方式,不会对foo依赖项产生副作用(无论是现在还是将来)
spring引导父项目
作为具有自己的依赖项管理的父项目。由于这个原因,将foo依赖项
作为根项目将很不幸没有帮助。如果没有其他人回答,我会给你奖金:)