c2c网站功能模块设计,wordpress前台很慢,DW怎么做招聘网站,深圳全网建站公司推荐整合 flatten-maven-plugin 插件#xff1a;解决子模块单独打包失败问题
解决问题
我们来解决 Maven 多模块工程中#xff0c;如果在父 pom 中定义了统一版本号 revision #xff0c;单独对某个子模块执行 clean package 打包失败的问题。
[ERROR] Failed to execute goa…整合 flatten-maven-plugin 插件解决子模块单独打包失败问题
解决问题
我们来解决 Maven 多模块工程中如果在父 pom 中定义了统一版本号 revision 单独对某个子模块执行 clean package 打包失败的问题。
[ERROR] Failed to execute goal on project xiaohashu-auth: Could not resolve dependencies for project com.quanxiaoha:xiaohashu-auth:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.quanxiaoha:xiaoha-common:jar:0.0.1-SNAPSHOT: Failed to read artifact descriptor for com.quanxiaoha:xiaoha-common:jar:0.0.1-SNAPSHOT: The following artifacts could not be resolved: com.quanxiaoha:xiaoha-framework:pom:${revision} (absent): Could not transfer artifact com.quanxiaoha:xiaoha-framework:pom:${revision} from/to huaweicloud (https://mirrors.huaweicloud.com/repository/maven/): status code: 400, reason phrase: (400) - [Help 1]大概意思就是找不到其他模块的包但是本地仓库中jar包确实有
失败原因
Could not transfer artifact com.quanxiaoha:xiaoha-framework:pom:${revision} from/to huaweicloud (https://mirrors.huaweicloud.com/repository/maven/)提示我们无法从中央仓库下载 com.quanxiaoha:xiaoha-framework:pom:${revision} 。版本号不对劲 怎么是 ${revision} !!!
问题原因在多模块项目中如果使用到 revision 占位符进行版本号管理。此时如果单独打包子项目时是不能将 ${revision} 替换成父 pom 中的版本号的最终打包时就会提示找不到依赖。
引入 flatten-maven-plugin 插件
3.1 什么是 flatten-maven-plugin 插件
flatten-maven-plugin 将项目的 pom.xml 文件转换成一个更简单的扁平版本包含消费者所需的关键信息。这个扁平的 POM 文件会去除构建相关的配置和不必要的细节留下一个更干净、简单的 POM便于理解和管理。
使用该插件有如下优势
简化 POM 文件 扁平化后的 POM 去除了构建插件、配置文件等构建过程中的不必要细节使其更简单、更易于下游项目消费。提高可重复性 通过扁平化确保消费者获得一致且可重复的项目依赖和元数据避免构建时的变异。减少大小和复杂性 该插件有助于减少 POM 文件的大小和复杂性便于理解和排除故障。对于包含复杂构建配置的大型项目尤其有用。优化分发 在将项目分发到 Maven 中央仓库或其他仓库时扁平化 POM 确保只包含必要的信息避免由于构建时配置导致的潜在问题。
3.2 开始整合
编辑项目最外层的 pom.xml 文件声明 flatten-maven-plugin 版本号并添加该插件 properties// 省略...flatten-maven-plugin.version1.5.0/flatten-maven-plugin.version// 省略.../properties// 省略...build!-- 统一插件管理 --pluginManagementplugins// 省略.../plugins/pluginManagementplugins!-- 统一 revision 版本, 解决子模块打包无法解析 ${revision} 版本号问题 --plugingroupIdorg.codehaus.mojo/groupIdartifactIdflatten-maven-plugin/artifactIdversion${flatten-maven-plugin.version}/versionconfigurationflattenModeresolveCiFriendliesOnly/flattenModeupdatePomFiletrue/updatePomFile/configurationexecutionsexecutionidflatten/idphaseprocess-resources/phasegoalsgoalflatten/goal/goals/executionexecutionidflatten.clean/idphaseclean/phasegoalsgoalclean/goal/goals/execution/executions/plugin/plugins/build注意这里 flatten-maven-plugin 是定义在 pluginManagement 节点外的子模块无需再手动引入直接让其全局生效。
插件添加完毕后再次对父 pom 执行打包可以看到对应各模块 pom.xml 文件的同级目录下额外生成了一个 .flattened-pom.xml 文件打开该文件看一下可以看到 ${revision} 被替换成了实际的版本号 .xml文件打开该文件看一下可以看到${revision} 被替换成了实际的版本号
再次对 xiaohashu-auth 子模块进行打包maven 就会解析 .flattened-pom.xml 文件进行打包至此多模块项目中无法对子模块单独打包的问题也就解决了~