How to exclude a dependency from being installed from Maven using intelliJ?

问题描述 投票:0回答:3

我目前已经创建了一个 Maven 项目并找到了一个重复的依赖项,它会影响我的代码按预期执行。

我有两个依赖项: json 模式验证器 javax.mail

经过进一步调查,似乎 json-schema-validator 依赖项还下载了一个 javax 邮件 jar 文件,有没有办法排除 json-schema-validator 也下载 javax.mail 相关依赖项?

到目前为止,我已经设置了以下似乎不起作用的内容:

正如您从图像中看到的那样,我试图通过在我的 pom.xml 文件中使用排除来排除依赖关系,但没有成功。

另请注意以下排除似乎不起作用:

  <exclusion>
           <groupId>javax.mail</groupId>
           <artifactId>mail</artifactId>
       </exclusion>
java maven dependencies pom.xml
3个回答
0
投票

这里有一些误区:

  • 您不需要排除“重复”依赖项。 Maven 不会将它们两次添加到类路径中。不过,您需要注意版本号。如果同一工件的不同版本出现在您的依赖树中,Maven 会选择其中之一。如果您对选择不满意,可以用

    <dependencyManagement>
    覆盖它。

  • 如果写exclusion(这里可能不需要),需要填写正确的groupId和artifactId。如果您尝试使用 artifactId

    javax.mail
    排除人工制品,难怪
    mailapi
    仍然存在。


0
投票

这是由于版本冲突引起的,因为在 POM 文件中另一个添加的依赖项中使用了相同的 API 作为依赖项。

一个解决方案是首先检查 hoe 多次使用不同版本的相同 API

mvn 依赖:树

以上命令将显示项目中使用的所有依赖项。现在排除用作依赖项的相同依赖项。

<exclusions>
    <exclusion>
        <groupId>com.sun.mail</groupId>
        <artifactId>mailapi</artifactId>
    </exclusion>
</exclusions>  

应用更改后更新 maven pom

mvn clean compile

-1
投票

添加以下排除项解决了我的问题:

       <dependency>
           <groupId>com.github.fge</groupId>
           <artifactId>json-schema-validator</artifactId>
           <version>2.2.6</version>
           <exclusions>
               <exclusion>
                   <groupId>javax.mail</groupId>
                   <artifactId>mailapi</artifactId>
               </exclusion>
           </exclusions>
       </dependency>
© www.soinside.com 2019 - 2024. All rights reserved.