gpt4 book ai didi

java - IDEA如何处理maven项目中的依赖关系?

转载 作者:搜寻专家 更新时间:2023-11-01 03:32:53 25 4
gpt4 key购买 nike

我有一个大型的多模块 Maven 项目。当我在 IDEA 中加载这个项目,从 nexuses 导入所有依赖项,制作“mvn clean install”来填充本地 repo 时,maven 似乎一切正常,因为它能够成功解决所有问题。但是在 IDEA 中,某些类显示为红色,并带有工具提示“无法解析...”

重要的一点是,一些远程类包被打包到 2 个或更多 jar(而不是通常制作的 jar)中,具有相同的 manifest.mf(因此具有相同的 Artifact 名称)。它们包含相同的包,但一个保留了一半的类,另一个保留了最后一个。范围是编译。

这就像我们在包 com.pack1 中有 2 个类 A 和 B,它们被打包到两个 jar 中 foo.jar(包含 com.pack1.A.class)和 foo-impl.jar( contaning com.pack1.B.class) 具有相同的 list 。

似乎 maven 正确处理了这个问题,但 IDEA 没有:在项目的结构中,只有一个来自 jar-bundle 的 jar(没有像 "-impl 这样的额外名称部分的那个) ““-web”)。所以一些类(来自其余的 jar )是红色的,并且不能通过ctrl+LMB 打开或用ctrl-N 找到。本地 m2 仓库中也只有一个 jar(与 IDEA 的项目设置相同)。

神奇的是 IDEA 仍然可以通过 double-shift 找到丢失的类并按原样打开代码(没有反编译警告)。如果我在编辑器中打开此类,项目结构面板上的从源代码滚动 将不起作用。看起来 IDEA 以某种方式设法将类加载到内存中的类路径,但不知道在文件系统上的何处可以找到相应的 jar。它确实不存在,因为 “本地 m2 存储库中也只有一个 jar”

所以我的问题是怎么可能?我怎样才能使 IDEA 和 maven 成为 friend ,以便它们在处理依赖项时表现相同?
(除了手动将缺少的 jar 添加到项目结构中)

我尝试在正确的 maven 导航栏上重新导入,使 IDEA 的缓存无效,清理本地 m2 存储库,从文件重新导入整个项目 ->新-> 从现有源项目,在设置 -> 构建、执行、部署 -> 构建工具 -> Maven-> 存储库中更新存储库并使用不同的 maven 版本。

Maven 3.0.4,IDEA 17.1

最佳答案

首先确保在添加新依赖项后重新导入 maven。或者激活自动导入(右键单击项目 -> Maven -> 重新导入)。

下一篇:Intellij Idea已经捆绑了maven。您可以设置您默认使用的那个。

前往:设置 -> 构建、执行、部署 -> 构建工具 -> Maven

在 Maven 主目录中,选择您的 Maven 主文件夹并保存。从现在开始,intellij 将使用与您在系统中使用的相同的 maven。

关于java - IDEA如何处理maven项目中的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43584655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com