maven多模块聚合打包父pom version占位符总无法install问题解决

server/2024/10/24 3:09:00/

今天新写个java项目,父pom是 pom ,打包是verison 用的占位符总是找不到正确版本 报错 Failed to read artifact descriptor for com.lw.lwte:lwte-all:jar:1.0.0-SNAPSHOT: The following artifacts c
ould not be resolved: com.lw.lwte:lwte-parent:pom:${revision}

最终定位到原因为少了flatten-maven-plugin 插件的配置 ,在多模块聚合项目中 如果使用占位符方式来对版本或其他进行控制,就需要引入此插件

flatten-maven-plugin 是 Maven 的一个扩展插件,由 Mojohaus 组织维护,旨在解决 Maven 多模块项目中 POM 继承导致的复杂依赖问题。以下是对 flatten-maven-plugin 的详细解析:

一、基本介绍

作用:flatten-maven-plugin 的主要作用是将多模块项目的依赖关系展开,将所有模块的代码和依赖打包到一个单独的 JAR 或 WAR 文件中,方便部署和发布。同时,它还能生成一个没有继承关系的“扁平”POM 文件,这在发布或共享项目时非常有用,因为它简化了依赖结构,使得下游用户能够更容易地理解和管理这些依赖。

优点:

简化部署流程:通过将多模块项目展开为单一的部署包,减少了部署过程中的依赖管理和配置问题。
提高部署效率:展开后的单一部署包可以减少网络传输和文件操作的开销,提高部署效率。
管理依赖冲突:flatten-maven-plugin 可以帮助解决多模块项目中的依赖冲突问题,通过将所有模块的依赖打包到一个文件中,避免了不同模块之间的依赖版本冲突。

二、使用方法

要在 Maven 项目中使用 flatten-maven-plugin,你需要在项目的 pom.xml 文件中添加插件配置。以下是一个基本的配置示例:

<build><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>最新版本号</version> <!-- 请替换为实际使用的最新版本号 --><configuration><!-- 可选配置项,依据需求调整 --><flattenMode>only</flattenMode><outputDirectory>${project.build.directory}/flattened-poms/</outputDirectory></configuration><executions><execution><id>flatten</id><goals><goal>flatten</goal></goals><phase>validate</phase> <!-- 指定插件执行的 Maven 生命周期阶段 --></execution><!-- 如果需要自动清理,可以增加另一个执行以解除扁平化 --></executions></plugin></plugins>
</build>

在上述配置中,flattenMode 控制扁平化的模式,outputDirectory 定义生成扁平化 POM 的存储位置,phase 指定插件执行的 Maven 生命周期阶段。

三、执行方式

在 Maven 项目中,通常通过命令行调用 Maven 生命周期阶段来执行插件。对于 flatten-maven-plugin,你可以使用以下命令来执行扁平化操作:

java">mvn flatten:flatten

该命令将应用扁平化逻辑到你的 pom.xml 上,生成一个没有继承层次的 POM 版本,存放在指定的位置。

四、注意事项

使用 flatten-maven-plugin 时,需要注意扁平化可能导致依赖项之间的耦合度增加。如果一个依赖项发生更改,可能会影响到整个应用程序。

扁平化可能会增加应用程序的启动时间和内存占用,因为所有的依赖项都被加载到内存中。

如果项目中使用了某些特定的插件或配置,可能需要进行额外的调整以适应扁平化后的项目结构。

五、总结

flatten-maven-plugin 是一个强大的 Maven 插件,它能够帮助开发者更好地管理和部署 Maven 多模块项目。通过扁平化项目的依赖关系,它简化了部署流程,提高了部署效率,并解决了依赖冲突问题。然而,在使用时也需要注意其可能带来的副作用,并根据实际情况进行权衡和调整。


http://www.ppmy.cn/server/134332.html

相关文章

编译器与集成开发环境

编译器 一.什么是编译器 将高级语言代码转换成CPU能够识别的二进制指令 二.常用编译器 1.MSVC Windows平台Visual Studio(VS)自带的C/C编译器 2.MingW(编译环境)&#xff1a;gcc是MingW的核心组成 Linux/Windows 3.clang 苹果电脑上的开发工具&#xff0c;XCode 集成…

Elasticsearch 解析:倒排索引机制/字段类型/语法/常见问题

Elasticsearch 是一个分布式的开源搜索引擎&#xff0c;广泛用于全文搜索、分析和数据存储。它基于 Apache Lucene 构建&#xff0c;支持 RESTful 风格的 API&#xff0c;使得开发者能够高效地存储和检索数据。本文将详细讲解 Elasticsearch 的基本原理&#xff0c;特别是其倒排…

CF-Loss:用于视网膜多分类血管分割和血管特征测量的临床相关特征优化损失函数|文献速递-基于生成模型的数据增强与疾病监测应用

Title 题目 CF-Loss: Clinically-relevant feature optimised loss function for retinal multi-class vessel segmentation and vascular feature measurement CF-Loss&#xff1a;用于视网膜多分类血管分割和血管特征测量的临床相关特征优化损失函数 01 文献速递介绍 视…

android系统资源调度分析

一 哪些资源可以调度 cpu&#xff0c;mem&#xff0c;io&#xff0c;gpu 在此之上linux又虚拟出了 cgroup子系统&#xff0c;这里列举常用的分类 blkio 管理io输入输出限制的 cpuset 控制cpu核的分配 freezer 控制进程挂起 memory 内存限制 stune 控制cpu频率…

2023年五一杯数学建模C题双碳目标下低碳建筑研究求解全过程论文及程序

2023年五一杯数学建模 C题 双碳目标下低碳建筑研究 原题再现&#xff1a; “双碳”即碳达峰与碳中和的简称&#xff0c;我国力争2030年前实现碳达峰&#xff0c;2060年前实现碳中和。“双碳”战略倡导绿色、环保、低碳的生活方式。我国加快降低碳排放步伐&#xff0c;大力推进…

【HTML】构建网页的基石

我的主页&#xff1a;2的n次方_ HTML 是一种超文本标记语言&#xff0c;不仅有文本&#xff0c;还能包含图片&#xff0c;音频等 1. HTML 的文件基本结构 html 标签是整个 html 文件的最顶层标签&#xff0c;head 标签中写页面的属性&#xff0c;body 标签是页面中显示的…

搜维尔科技:感受、握持、推动、连接和挤压虚拟物体,SenseGlove触觉反馈手套拥有先进的触觉技术、一流的可用性和功能

感受、握持、推动、连接和挤压虚拟物体&#xff0c;SenseGlove触觉反馈手套拥有先进的触觉技术、一流的可用性和功能 感受、握持、推动、连接和挤压虚拟物体&#xff0c;SenseGlove触觉反馈手套拥有先进的触觉技术、一流的可用性和功能

Spring Boot + Vue 前后端分离项目总结:解决 CORS 和 404 问题

Spring Boot Vue 前后端分离项目总结&#xff1a;解决 CORS 和 404 问题 在进行前后端分离的项目开发中&#xff0c;我们遇到了几个关键问题&#xff1a;跨域问题 (CORS) 和 404 路由匹配错误。以下是这些问题的详细分析和最终的解决方案。 问题描述 跨域请求被阻止 (CORS) 当…