[英]Maven modules use different versions of same library and parent compile gives error
我有一个 springboot 项目,它使用来自 org.apache.tomcat.embed:tomcat-ember-core9.0 的 package javax.servlet。 (这来自springboot)
我有另一个使用此 javax.servlet 但版本为 2.3 的 maven 项目(API 项目)
现在我创建了一个父 maven 项目,其中包括上述 2 个项目作为模块。 当我单独编译springboot项目时,一切都很好。 但是当我编译父项目时,它需要javax.servlet.api 2.3版来编译springboot项目并给出错误,因为springboot正在使用的方法在2.3中不可用。
如何解决这个问题?
请在此处找到示例源代码: https://github.com/abmjunaed/maven-multi-project-error
我添加了非常少的代码来重现场景,以便您查看和帮助!
在 IntelliJ 的外部库中,我可以看到父项目中的 libs 和 maven 正在使用 javax-servlet-api:2.3 来编译 springBoot 项目并给出错误
您应该将正确版本的 javax.servlet 依赖项放在父模块的 pom 中。这将覆盖 api 项目中提到的 javax.servlet 依赖项。 要找到正确的版本,您必须尝试使用 javax.servlet 版本,最新的 spring 启动 package 应该支持 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.