透视maven打包编译正常,intellj idea编译失败问题的本质

前言

maven多模块类型的项目,在Java的中大型应用中非常常见, 在 module 很多的情况,经常会出现各种各样的编辑依赖错误问题,今天记录一种比较常见的 case :

A 子模块依赖 B 子模块,在 Terminal 上终端上 项目根目录下打包编译是正常的,如下命令都是执行成功的:

mvn clean install -U
mvn clean package
mvn dependency:tree

但偏偏打开 IDEA 中的类文件,A 模块中的类显示找不到依赖 B 模块的类,具体就是某个子模块的依赖的类找不到,各种 reimport 和 invalid cache restart 都尝试过了,还是无法解决,这是为什么呢 ?

IDEA Maven 工程结构

如上图,maven 工程通用的配置项这里不再说明,这里着中看下和 IDE 有关两个配置项:

.idea

项目级别设置,通常包括版本控制系统信息,模块信息,运行配置,代码样式等,通常情况下,这些配置文件不应该被包含在版本控制系统中,因为它们是特定于开发环境的

.iml

模块级别设置,每个模块(Module)都有一个对应的 .iml 文件,它包含了有关模块的信息,例如源代码目录、依赖关系等, .iml 文件的一些常见内容如下:

  • 源代码目录配置: 包括 sourceFolder 元素,定义了模块中的源代码目录。
  • 依赖关系配置: 包括 orderEntry 元素,定义了模块的依赖关系,例如依赖的库、其他模块等。
  • 输出目录配置: 包括 output 元素,定义了编译输出的目录。

这些文件是由 IntelliJ IDEA 自动生成和维护的,通常无需手动编辑。它们存储了项目和模块的配置信息,以确保 IntelliJ IDEA 能够正确地理解和构建项目

注意:.idea 目录和 .iml 文件通常会被添加到 .gitignore 文件中,避免提交到代码仓库

IDE 编译报错问题

回到文章开头,maven打包是正常的情况下,IDEA 却编译报错,这通常是 pom 记载的依赖关系信息 与 iml 里面的内容不一致造成,一个典型的案例:

父pom版本升级了,子 pom 中引用的父 pom 的版本号,上次版本是 1.0.0-SNAPSHOT,这次升级成2.0.0-SNAPSHOT,修改完成后,maven打包正常,IDEA 的代码在 reimport 和 invalidate cache/restart 重启后飘红报错 。

解决依赖关系不一致问题

方法一

使用 mvn idea:module 命令,强制重新生成最新的依赖关系到 .iml 中

方法二

手动删除 .idea 目录和所有的 .iml 文件信息后,重启 IDEA,让其重新自动生成,推荐优先使用方法一,如果不生效的情况下,再使用该方法

总结

我们常常关心 maven 相关的配置,而 IDE 的一些配置文件却被忽略了,其实在本地开发环境中,尤其是使用了版本控制系统 Git 后或者项目逐渐变得庞大和复杂的时候,IDE的配置文件会记录这些东西和依赖,如果项目长时间不用再打开 或者 check一个新项目到本地后续又合并新版本分支的时候基本就容易遇见这些问题,只有了解清楚这些问题的本质,下次我们再遇见就非常容易解决了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/168250.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

地推团队怎么接一手app拉新项目?这几个接单平台可以试试看

首推平台:“聚量推客” 有粉丝问我: 我在五线小城市做地推,有个10人的地推团队,怎么接到一手靠谱的单子? 其实不止一个粉丝在后台问我,做地推、充场的人都在找单子,做这个行业就没有不缺项目的…

二手车选购参考:Honda CB650R/CBR650R 2019~2023 国产价格享进口本田

本田好,本田妙,本田大法呱呱叫。本田的650系列在国内可以说是伤透了一批老车主的心,上路12万,3年现在还值个4万,搁谁也受不了,正好没什么太好的新闻写,今天就带大家来看看二手车选购参考&#x…

MQ和redis的内部原理一些总结

首先,先知道内部原理;其次,就是查官方文档实战了。 但是如果不熟悉内部原理,那么仅仅只是安装官方文档,并不能排除跟踪问题和故障、预防风险等策略; 以下总结图解:(mysql 8.0新增的…

6个国内外高质量icon素材网站分享给你,实用不花钱!

相信同是作为一名设计师,我们在看到一些好看的、有创意的或者是有设计感的素材时都会忍不住想保存下来,以防在我们做设计时没有灵感,开始抓瞎做设计,怎么也想不出来什么好的创意。可想而知,那样的情况下做出来的设计也…

stable-diffusion-webui之webui.py

主要就是webui的启动这块,需要初始化的地方,东西还是挺多的。

软件项目测试指南

软件测试是保证软件产品质量的重要手段之一。它是测量、评估软件产品特点和能力的活动。现在,国内一些软件企业对于软件测试的重视程度还很不够,认为测试工作非常简单,只是简单地操作所测的软件产品而已。这种错误的思想严重影响了国内软件质…

NX二次开发UF_CAM_ask_f_s_db_object 函数介绍

文章作者:里海 来源网站:里海NX二次开发3000例专栏 UF_CAM_ask_f_s_db_object Defined in: uf_cam.h int UF_CAM_ask_f_s_db_object(UF_CAM_db_object_t * db_obj ) overview 概述 This function provides the database object which is currently u…

virtuoso 后仿 ADE L error

ADE后仿时出现error ERROR (SFE-23): "input.scs" 299: The instance _57_D32_noxref is referencing an undefined model or subcircuit, parasitic_nwd. Either include the file containing the definition of parasitic_nwd, or define parasitic_nwd before run…

找不到msvcp110.dll怎么办,msvcp110.dll丢失的修复方法

您可能已经碰见过这样的情况,当您试图打开某个软件时,屏幕上突然跳出一个提示窗口,告诉您 “找不到msvcp110.dll”,“msvcp110.dll丢失”。遇到这种情况是不是让人很焦头烂额呀?别担心,接下来我就为您提供几…

【数据结构初阶(3)】双向带头结点循环链表

文章目录 Ⅰ 概念及结构Ⅱ 基本操作实现1. 结点的定义2. 创建头节点3. 创建新结点4. 双向链表销毁5. 双向链表打印6. 双向链表尾插7. 双向链表尾删8. 双向链表头插9. 双向链表头删10. 双向链表查找11. 在指定 pos 位置前插入新结点12. 删除指定 pos 位置的结点 Ⅲ 十分钟手搓链…

2023年【高处安装、维护、拆除】模拟考试题及高处安装、维护、拆除模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 2023年【高处安装、维护、拆除】模拟考试题及高处安装、维护、拆除模拟考试题库,包含高处安装、维护、拆除模拟考试题答案和解析及高处安装、维护、拆除模拟考试题库练习。安全生产模拟考试一点通结合国家…

链动2+1模式:创新营销引领白酒产业新潮流

在当今高度竞争的市场环境中,创新营销模式对于企业的发展至关重要。链动21模式作为一种独特的营销策略,将白酒产品与该模式相结合,充分发挥其优势,通过独特的身份晋升和奖励机制,快速建立销售渠道,提高用户…

MIUI查看当前手机电池容量

MIUI查看当前手机电池容量 1. 按如下步骤操作生成bug报告 2. 按如下操作解压bug报告 Last learned battery capacity

kernel32.dll丢失都有什么解决办法,帮助大家解决kernel32.dll丢失的问题

kernel32.dll丢失是电脑中常出现的情况,今天就想和大脚聊聊这个kernel32.dll 文件,这个文件它的功能是干什么的,如果电脑中kernel32.dll 丢失都有什么解决办法,帮助大家解决kernel32.dll丢失的问题,本篇文章给大家提供…

excel-gen.js 导出excel 功能

目录 概要 整体架构流程 html部分: js部分: json部分: 小结 概要 功能会使用到如下插件: jszip.min.js FileSaver.js jquery.min.js excel-gen.js highcharts.js exporting.js export_data.js 主要是highcharts图表…

C编译环境和预处理(非常详细,建议收藏)

C编译环境和预处理(非常详细,建议收藏) 一、程序的翻译环境和执行环境二、 详解编译链接2.1 翻译环境2.2 编译本身的几个阶段符号汇总、符号表、合并段表、符号表的合并和重定位分别是什么? 2.2 运行环境 三、预处理详解3.1 预定义…

安卓主板_MTK安卓一体机方案定制

安卓一体机主板集成多媒体解码、3G(4G/5G可选)模块,GPS,液晶驱动、WIFI、蓝牙、串口于一体,支持绝大部分当前流行的视频及图片格式解码。支持MIPI接口的1280*720分辨率的显示屏,最大支持1280*720P解码。大大…

海外代理IP如何找到靠谱的?

现在市面上有很多代理服务商,大家可以根据自己的需求选择一个适合自己业务的的IP代理服务商,现在也有一些免费的,但如果力求稳定安全,还是选择付费的。 这里提醒一句,在买代理IP时最好找这种可以免费试用的&#xff0…

Axure RP Pro 8 mac/win中文版:打造无限可能的原型设计工具

在如今的数字化时代,原型设计工具越来越受到设计师和产品经理们的重视。而Axure RP Pro8作为一款强大的原型设计工具,成为了众多专业人士的首选。 首先,Axure RP Pro8具备丰富的功能。它提供了多种交互元素和动画效果,使得用户可…

文件加密软件哪个好丨2023年最值得收藏的6款文件加密软件

文件加密软件哪个好? 在这个安全事件频发的时代,信息安全、文件安全已成为很多人关注的话题。不管是电脑还是手机,都需要重视文件加密这个话题。 那今天就推荐6款最值得收藏的文件加密软件,并分析其中的优缺点。 一、电脑加密软…
最新文章