Maven全局plugin配置传递子pom
前言
我们现在有一个多模块的 maven 项目,项目中模块一般会有一个顶级的 parent ,我们想通过 parent 中配置全局的 version,但一般在 <parent> 标签中配置 ${} 变量是会报错的 。
所以这里引入一个 flatten-maven-plugin
比如我们的模块结构为
1 | gt-boot-parent |
pom.xml 文件配置
gt-boot-parent的pom.xml 配置
1 |
|
gt-base的pom.xml 配置
1 |
|
flatten 插件带来的好处
- 只需要修改
parent的revision即可完成整个多个项目的版本修改. - 如果我们项目有
Nexus,那么我们依赖中的${},都会自动改为实际的版本号,并且dependence.scope未填写时,自动填写默认的scopecompile - 如果我们使用
Intellij IDEA,那我们还会享有view -> tool windows -> maven窗口的树形结构展示。 - 构建特定元素被删除
- 默认情况下会删除开发特定的元素
- 它仅包含您的工件用户所需的元素
这里就没有考虑
mvn versions:set -DnewVersion=命令了,当前命令也可以完成一键修改版本号
官方介绍
官方案例
配置案例
项目中查看预览效果可以直接对比查询
pom.xml与同目录下的 ..flattened-pom.xml
Flatten可选配置
1 |
|
configuration
flattenMode不做详细解释,一般使用resolveCiFriendliesOnly,它可以:自动从
parent获取并插入子pom的Build、CiManagement、Contributors、Dependencies、DependencyManagement、DescriptionDevelopers、DistributionManagementInceptionYear、IssueManagement、MailingListsModules、Name、Organization、PluginManagement、PluginRepositories、PrerequisitesProfiles、Properties、Reporting、Repositories、Scm、Url
会自动处理子
pom的Parent、Version其它选择
| | | |
| ————- | ————————- | ———————————————————— |
|flattenMode|minimum| 弃用 |
|flattenMode|oss| 保留repositories、pluginRepositories外的所有pom元素 |
|flattenMode|ossrh| Keeps all {@link FlattenDescriptor optional POM elements} that are required for OSS Repository-Hosting. |
|flattenMode|bom| 像ossrh,会额外保留dependencyManagement、Properties|
|flattenMode|defaults| 删除所有 pom 节点,除了repositories|
|flattenMode|clean| 删除所有 pom 节点 |
|flattenMode|fatjar| 删除所有 pom 节点 和 dependencies |
|flattenMode|resolveCiFriendliesOnly| 仅解析revision、sha1、changelist, |
updatePomFile一般设置为 truetrue or false/** * The flag to indicate if the generated flattened POM shall be set as POM file to the current project. By default * this is only done for projects with packaging other than <code>pom</code>. You may want to also do this for * <code>pom</code> packages projects by setting this parameter to <code>true</code> or you can use * <code>false</code> in order to only generate the flattened POM but never set it as POM file. If * <code>flattenMode</code> is set to bom the default value will be <code>true</code>. */1
2
3
4
5
6
7
8
9
- `pomElements`元素的处理
- ```xml
<pomElement>
<!-- 以 developers 元素举例-->
<!--ElementHandling:flatten,expand,resolve,interpolate,keep,remove -->
<developers>remove</developers>
</pomElement>flatten平铺,会删除所有developersexpand子pom.xml继承第一个parent的developersresolve子pom.xml继承第一个parent的developersinterpolate插入keep子pom.xml不会继承parent的developersremove删除所有developers
下面一般不配置
embedBuildProfileDependenciesflattenDependencyModeflattenedPomFilenamelocalRepositorymojoExecutionoutputDirectoryprojectsession