当前位置: 首页 > article >正文

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

今天新写个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,你可以使用以下命令来执行扁平化操作:

mvn flatten:flatten

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

四、注意事项

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

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

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

五、总结

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


http://www.kler.cn/news/358336.html

相关文章:

  • 【C语言教程】【常用类库】(十六)正则表达式库 - <regex.h>
  • 七、朴素贝叶斯算法
  • Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)
  • Web前端-JavaScript书写位置
  • 实验4:IPSec VPN(课内实验)
  • 微服务发布
  • K8S中的pod和node的区别
  • 基于小波图像去噪的MATLAB实现
  • Repo工具详解
  • react 中的hooks中的useState
  • 机器学习【工业高精度计算及其应用】
  • 基于JDK的LRU算法实现
  • 现今 CSS3 最强二维布局系统 Grid 网格布局
  • 国家信息安全水平考试(NISP一级)最新题库-第十六章
  • 11 图书借阅功能实现(Vue3+element plus +Spring Boot)
  • Windows上安装Go并配置环境变量(图文步骤)
  • Axure RP电商系统商城PC+app+后台买家卖端高保真原型模板及元件库
  • Java进阶之路:构造方法
  • C++STL--------list
  • 线性代数基础02