springboot学习系列:项目运行存在多个相同路径的文件,导致项目运行异常的解决措施

场景

旧项目改造成微服务项目,有些项目存在多个相同路径的Java文件,在运行过程中,时常遇到找不到方法的问题。本篇博客主要是针对此种情况进行问题的解决。

环境

软件 版本
springboot 2.1.1
JDK 1.8

正文

思路

我们这里针对是外部jar包,即很难可以改动文件。所以,我们可以考虑,将这个jar里面的文件重命名进行规避或者移除冲突的文件,生成新的jar包。而这里,我们就要使用maven的shade插件,这个插件的具体介绍请查看下文的连接,自行查看。

方法一:重命名

我们这里使用relocations标签进行设置,样例如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <relocations>
                    <relocation>
                        <pattern>com.test.annotation</pattern>
                        <shadedPattern>com.test.annotation.shade</shadedPattern>
                    </relocation>
                </relocations>
            </configuration>
        </execution>
    </executions>
</plugin>

以上样例,会将com.test.annotation开头的路径都更新为com.test.annotation.shade,避免了路径冲突。这种情况适合于当前应用与线上环境存在jar包冲突的时候使用。

方法二:移除冲突文件

将冲突文件进行过滤,然后重新生成新的依赖。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <filters>
                    <filter>
                        <artifact>com.test/artifact>
                        <excludes>
                            <exclude>com/test/annotation/**</exclude>
                            <exclude>pub/source/LogOperateUtil*</exclude>
                            <exclude>util/SessionUtil*</exclude>
                        </excludes>
                    </filter>
                </filters>
            </configuration>
        </execution>
    </executions>
</plugin>

以上配置会将命中的文件过滤掉,进而规避了该问题。当然,在pom文件里面,引入的依赖就只有需要改动的lib包,记得移除相关的附属依赖,免得最后的包过大,影响效率。

总结

本文梳理了两种方式进行规避相同文件冲突,在使用过程中,请根据不同情况进行方法的抉择。

参考链接

maven-shade-plugin

随缘求赞

如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以点击关注
可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!
在这里插入图片描述
拜拜

猜你喜欢

转载自blog.csdn.net/u013084266/article/details/109079123