dockerize时jar版本错误-Tomcat

问题描述

我有一个Java应用程序,它使用Apache POI作为依赖项以及其他jar,所有这些jar都由maven管理,并且部署在具有旧版本的Apache POI及其依赖项的Tomcat服务器上。我的问题是,当我在本地测试应用程序时,它使用的是应用程序内部的罐子,即新版本;当我在docker容器中运行时,它使用的是Tomcat服务器上的罐子(旧版本)。当放置在Docker容器上时,如何固定应用程序在内部而不是外部运行和使用其jar?我已经使用过shad maven插件,但是很难,因为服务器上有许多旧的jar,我无法为所有内容着色。

解决方法

我将插件更改为从maven生成生成jar到maven组件:

<plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- bind to the packaging phase -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

通过这种方式,应用程序可以在jar中包含所有需要的内容,而不必使用服务器中的旧类。而且也不需要遮盖所有的罐子。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...