我有一个springboot项目,它使用来自org.apache.tomcat.embed:tomcat-ember-core9.0.34.的包javax.servlet(这是从春天来的)
我有另一个maven项目(API项目),它使用这个javax.servlet,但是版本2.3。
现在,我已经创建了一个父maven项目,其中包括上面的两个项目作为模块。当我单独编译springboot项目时,一切都很好。但是,当我编译父项目时,需要使用javax.servlet.api版本2.3来编译springboot项目并给出错误,因为一个方法在2.3中是不可用的,而springboot正在使用这个方法。
如何解决这个问题?
请在这里找到一个示例源代码: https://github.com/abmjunaed/maven-multi-project-error
我添加了非常小的代码来再现场景,这样您就可以查看并帮助您了!
在IntelliJ的外部库中,我可以看到父项目的lib和maven都采用javax-servlet-api:2.3编译springBoot项目并给出错误。

发布于 2020-12-30 16:45:37
找到解决办法了我真不敢相信!
对spring-boot-starter-web的依赖是在库项目的依赖之后,这导致了问题的出现。
现在我增加了
弹簧-启动-启动-web
作为第一个依赖项和
库项目
作为第二个依赖,一切都很好!
<dependencies>
<dependency> <!--1st dependency-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>library</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
</dependencies>发布于 2020-12-30 14:08:50
您应该将正确版本的javax.servlet依赖项放在父模块的pom.This中,以覆盖javax.servlet项目中提到的javax.servlet依赖项。为了找到正确的版本,您必须点击并尝试使用javax.servlet版本,最新的春季启动包应该支持版本2.3。试试看!
https://stackoverflow.com/questions/65506289
复制相似问题