Maven依赖本地jar包解析失败的解决记录
记录一次构建报错“不知道这样的主机”的排查过程,实际是本地jar未安装到本地仓库引起的。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-05-12 06:14:29 Maven flatten-maven-plugin 版本管理 多模块项目 POM文件
Maven多模块项目中的POM继承与版本占位符难题常令人头疼。flatten-maven-plugin应运而生,它通过动态替换变量、生成简化版POM,有效解决这些问题。
其核心功能、updatePomFile等关键参数,以及如何在CI/CD等场景中提升构建效率和项目可维护性,让您的多模块构建流程更加顺畅。
flatten-maven-plugin 插件是 Maven 中用于解决多模块项目 POM 文件继承和版本占位符问题的工具。它通过扁平化处理,生成可替换变量和简化依赖结构的 POM 文件,提升构建效率和可维护性。
flatten-maven-plugin 插件能够将父 POM 中定义的版本变量(如 ${revision})在构建时动态替换为具体值,确保生成的 POM 文件(如 .flattened-pom.xml)中不包含占位符。
示例:
父 POM 定义版本变量:
<properties>
<revision>1.0.0</revision>
</properties>
<version>${revision}</version>
插件生成 .flattened-pom.xml 后,版本变为具体值:
<version>1.0.0</version>
flatten-maven-plugin 插件可以生成简化版的 POM 文件(默认命名为 .flattened-pom.xml),去除不必要的继承和依赖管理结构,仅保留必要的配置信息(如 groupId、artifactId、version 等)。
适用场景:
通过父模块定义版本号变量,所有子模块继承该变量,实现统一管理。修改父模块的变量值即可全局更新版本,减少手动修改的工作量。
示例:
父 POM 定义变量:
<properties>
<log4j.version>2.17.1</log4j.version>
</properties>
子模块引用变量:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
| 参数名 | 作用 | 示例值 |
|---|---|---|
updatePomFile |
是否在打包时替换原始 POM 文件中的变量 | true/false(默认) |
flattenMode |
控制生成 .flattened-pom.xml 的内容范围 |
oss/ossrh/bom |
flattenedPomFilename |
自定义生成的扁平化 POM 文件名 | flattened.pom |
flattenMode 常用值:
oss:开源软件常用,保留大部分 POM 元素(除 repositories/pluginRepositories)。ossrh:保留所有元素,适用于发布到 OSSRH(Sonatype 仓库)。resolveCiFriendliesOnly:仅替换 ${revision}、${sha1} 等 CI 友好变量,其他保持原样。在多模块项目中,父模块通过占位符(如 ${revision})定义版本号,子模块继承后打包时这些占位符可能不会被正确替换。
flatten-maven-plugin 可在构建过程中动态替换这些变量,确保生成的 POM 文件可被正确解析。
问题复现:
未使用插件时,install/deploy 后的 POM 文件仍包含 ${revision},导致其他项目无法引用。
lcjmSSL采用主流的ACME协议,兼容性极佳。对接Let’s Encrypt、Google、ZeroSSL三大渠道,确保证书在不同浏览器、操作系统和设备上均获得高度信任,为你的网站保驾护航。
解决效果:
使用插件后,生成的 .flattened-pom.xml 中版本号被替换为具体值(如 1.0.0)。
在大型项目中,通过调整 flattenMode 减少生成的 POM 文件体积,加速构建和依赖解析。
示例配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.2.7</version>
<configuration>
<flattenMode>oss</flattenMode> <!-- 仅保留必要元素 -->
</configuration>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
</executions>
</plugin>
通过 resolveCiFriendliesOnly 模式,仅替换 ${revision}、${sha1} 等变量,保留其他结构,适配 CI/CD 流水线中的动态版本管理。
示例: 在 CI 流程中,通过命令行参数传递版本号:
mvn clean install -Drevision=1.2.0-SNAPSHOT
flatten-maven-plugin 插件通过版本变量替换、POM 结构扁平化和统一版本管理,解决了多模块 Maven 项目中 POM 继承导致的版本占位符问题,提升了构建效率和可维护性。其典型使用场景包括解决版本占位符问题、简化多模块项目构建和支持 CI/CD 友好变量。通过合理配置该插件,可以显著提升多模块 Maven 项目的构建效率和可维护性。
记录一次构建报错“不知道这样的主机”的排查过程,实际是本地jar未安装到本地仓库引起的。
本文深入解析在IntelliJ IDEA中,如何通过Maven优雅地手动导入JAR包,并实现项目的自动化构建。详细介绍`mvn install:install-file`命令、项目内JAR配置及`maven-install-plugin`三种方法,助您掌握Maven规范,提升团队协作与依赖管理效率。强烈推荐第一种方法,确保您的项目结构清晰、可维护。
本文将带你全面掌握PNPM版本管理的精髓,从查看当前版本号到平滑升级,再到精准定位安装路径。深入解读语义化版本规范,助你轻松理解每个数字背后的意义,确保开发环境始终高效最新。
深入剖析Maven多模块项目中`relativePath`配置错误的根源,从路径指向到项目结构不匹配,全面解析问题成因。本文提供了一套系统性的解决方案,包括精确修正POM文件、严格验证目录结构及强制更新构建,助你彻底解决继承解析失败的困扰,显著提升多模块项目的构建成功率。
Maven构建流程中遇到定制化难题?maven-antrun-plugin是你的终极答案!本文揭示如何利用此插件,轻松解决复杂文件操作、系统命令调用和代码生成等构建挑战。通过实例讲解,提升构建灵活性和开发效率,让你的项目管理如虎添翼。