问题描述
我有一个 springboot 项目,它使用来自 org.apache.tomcat.embed:tomcat-ember-core9.0.34 的包 javax.servlet。 (这是来自springboot)
我有另一个 maven 项目(API 项目),它使用这个 javax.servlet 但版本为 2.3
现在我创建了一个父 maven 项目,其中包含以上 2 个项目作为模块。 当我单独编译springboot项目时,一切正常。 但是当我编译父项目时,它需要javax.servlet.api 2.3版来编译springboot项目并给出错误,因为springboot正在使用的2.3中没有可用的方法。
如何解决这个问题?
请在此处找到示例源代码: https://github.com/abmjunaed/maven-multi-project-error
在IntelliJ的External Libraries中,我可以看到父项目的libs和maven正在使用javax-servlet-api:2.3编译springBoot项目并给出错误
解决方法
您应该在父模块的 pom 中放置正确版本的 javax.servlet 依赖项。这将覆盖 api 项目中提到的 javax.servlet 依赖项。要找到正确的版本,您必须点击并尝试使用 javax.servlet 版本,最新的 Spring Boot 包应该支持 2.3 版。试试看!!
,找到了解决方案,我简直不敢相信!
对spring-boot-starter-web 的依赖是在库项目 的依赖之后,这导致了问题。
现在我添加了
spring-boot-starter-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>