繁体   English   中英

Maven 模块使用不同版本的同一库和父编译给出错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM