繁体   English   中英

如何解决 IntelliJ IDEA 中 Java 文件的依赖冲突?

[英]How do I resolve dependency conflict for a Java file in IntelliJ IDEA?

我试图在网上搜索我面临的问题,但也许我没有向谷歌提出正确的问题,所以我在这里。

我在我的多模块项目中使用 IntelliJ IDEA。 对于我的一个模块,其中一个类文件正在使用静态导入 -

import static javax.ws.rs.core.Response.Status.Family.familyOf;

作为一个大项目,从内部存储库下载了很多依赖项,但由于某种原因,IntelliJ 拒绝使用依赖项“javax.ws.rs-api-2.0”,而是使用“jersey-core-1.8”。 因此,它抛出一个编译错误,说找不到符号“familyof”。

我从两个依赖项中查看了 Response.java,发现 jersey 依赖项没有 familyof 方法,而 javax.ws.rs-api-2.0 有它,但 IntelliJ 不使用此依赖项。 我该如何解决这个问题。 我团队中的大多数开发人员都在使用 Eclipse,他们没有这个问题。 我正在尝试习惯 IntelliJ IDE,但似乎无法解决这个问题。 非常感谢这方面的任何帮助。

PS - 这个问题在 Eclipse IDE 中不会发生。

我可以按照下面提到的步骤解决这个问题 -

  1. 转到“打开模块设置”Command+向下键
  2. 选择依赖项选项卡
  3. 在列表中搜索以上两个依赖
  4. 将“javax.ws.rs-api-2.0”依赖项向上移动以确保此依赖项高于“jersey-core-1.8”依赖项。

我不认为这是一个永久的解决方案,但它似乎有效。 如果对 Java/Mave/IntelliJ 有深入了解的人能回答这个问题,那就太好了!

通过在 pom.xml 中的依赖项周围进行混洗,您可能每次使用 Maven 都可以获得正确的结果,并确保您希望优先的依赖项在依赖项列表中首先声明。 是的,在 pom.xml 中声明依赖项的顺序很重要!

然后,如果你们都使用相同的 Maven 版本,你应该有一个一致的结果。

Maven 如何在相同依赖项的两个版本之间进行选择?

正如这里所解释的,Maven 选择第一个遇到的依赖项,这就是当您更改 pom 中依赖项的顺序时它起作用的原因。

如何查找Maven依赖项冲突?

在终端中,在 pom 文件夹中:

mvn dependency:tree -Dverbose | grep "conflict"

将为您提供项目中所有冲突的依赖项。

使用 Eclipse IDE,单击 pom 和Dependency hierarchy选项卡。 然后,使用依赖项填充过滤器字段。 在左侧,您将看到冲突(如mvn dependendy:tree ,带有过滤结果),在右侧,您将看到选择的依赖项。

使用 IntelliJ,IntelliJ 的文档可以帮助您。 有一个图表视图来查找冲突。

如何解决Maven依赖冲突?

  1. 在pom中添加dependencyManagement标签告诉Maven你想要哪个依赖

示例:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.7</version>
        </dependency>
    <dependencies>
</dependencyManagement>
  1. 改变pom中依赖的顺序
  2. 添加依赖项的排除项

示例:

    <dependency>
        <groupId>com.my.groupid</groupId>
        <artifactId>my-artifact-id</artifactId>
        <version>1.2.2</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

为什么 IntelliJ 和 Eclipse 之间存在差异?

请阅读IntelliJ 的文档以轻松配置项目依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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