【问题标题】:How to exclude a dependecy from being installed via Maven using intelliJ?如何使用 IntelliJ 排除通过 Maven 安装的依赖项?
【发布时间】:2019-05-26 11:41:49
【问题描述】:

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

我有两个依赖项: json-schema-validator 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


    【解决方案1】:

    这里有一些误解:

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

    • 如果你写了一个exclusion(这里你可能不需要),你需要填写正确的groupId和artifactId。如果您尝试排除带有 artifactId javax.mail 的工件,难怪mailapi 仍然存在。

    【讨论】:

    • 在我的情况下,两个依赖项都列为 1.4.3,因为我还直接添加了以下内容:` javax.mailmail1.4.7` 但我仍然面临这个问题?
    • 你的依赖很奇怪,因为你使用mail作为artifactId,而上面你有mailapi。您面临的具体问题是什么?
    【解决方案2】:

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

           <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>
    

    【讨论】:

    • 可能是这种情况,但排除是解决这些问题的错误方法。要么使用正确的版本自己声明依赖项mailapi,要么使用&lt;dependencyManagement&gt;
    猜你喜欢
    • 2012-02-25
    • 1970-01-01
    • 2018-02-14
    • 2013-09-23
    • 2019-07-01
    • 2019-12-02
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多