flatten-maven-plugin使用
flatten-maven-plugin
是 Apache Maven 的一个插件,主要用于优化 Maven 项目的 POM 文件,生成一个“扁平化”的简化版本(通常称为 .flattened-pom.xml
)。它在项目构建时(如打包或发布到仓库)替换原始 POM,帮助解决依赖管理和版本继承中的潜在问题。
系统要求
Maven | 3.6.3 |
---|---|
JDK | 1.8 |
作用
- 简化依赖管理
在多模块项目中,子模块的 POM 通常继承父 POM 的配置。扁平化后的 POM 会直接包含所有必要的依赖和属性,避免因继承层级过深导致的依赖冲突或版本不明确。 - 发布干净的 POM
原始 POM 可能包含开发阶段的配置(如插件、未解析的变量等),而扁平化后的 POM 仅保留运行时必要的元数据,更适合发布到仓库供其他项目使用。 - 解决 CI/CD 中的问题
在持续集成环境中,扁平化 POM 可以避免构建过程中因动态版本号(如-SNAPSHOT
)或未解析属性导致的错误。
简单来说就是会生成一个压缩版本的 pom.xml
文件(.flattened-pom.xml
),然后在 install
和 deploy
阶段使用压缩后的 pom.xml
文件,替换原来的 pom.xml
文件
具体压缩策略如下:
- 和构建有关的元素会被删除;
- 和开发有关的元素默认会被删除;
- 只包含构件的使用者必须的一些信息;
- 变量会被解析;
- 上级关系会被解析,然后被压缩删除;
- 构建时实际使用的profile会被评估,视情况处理;
- 由JDK或者OS驱动的profile会被保留,需要时可以动态地控制依赖。
更多信息可以去官网查看:flatten-maven-plugin
使用
<!--这部分配置详情可以查看:https://www.mojohaus.org/flatten-maven-plugin/flatten-mojo.html-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<!-- enable flattening -->
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
<execution>
<!-- ensure proper cleanup -->
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
<inherited>true</inherited>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
</configuration>
</plugin>
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Blog!
喜欢就支持一下吧