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 多模块项目。通过扁平化项目的依赖关系,它简化了部署流程,提高了部署效率,并解决了依赖冲突问题。然而,在使用时也需要注意其可能带来的副作用,并根据实际情况进行权衡和调整。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个双鱼座的测开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值