一文搞懂idea中的根目录和路径(以Mybatis为例)
一文搞懂idea中的根目录和路径(以Mybatis为例)
在 IntelliJ IDEA 中,项目结构和组织比较灵活,允许用户根据项目需求进行定制。
1.根目录概念:
1.1 项目根目录(Project Root)
项目根目录是整个项目在本地硬盘上的存储位置,它包含了项目所需的所有文件和目录。在 IntelliJ IDEA 中,当你打开一个项目时,你实际上是指定了这个项目的根目录。项目根目录通常包含了项目配置文件(如 .idea
目录和 .iml
文件)、源代码、库依赖、资源文件等。
1.2 内容根目录(Content Root)
内容根目录则是相对于项目中的模块(Module)而言的。在 IntelliJ IDEA 中,一个项目可以包含多个模块,每个模块都有自己的内容根目录。内容根目录用于进一步细分项目中的不同部分,例如源代码、测试代码、资源文件等。
内容根目录的设定允许你更精细地控制模块的构建路径、依赖关系以及资源文件的访问。你可以为每个模块设置不同的源代码目录、资源目录、输出目录等。
1.3 示例
假设你有一个名为 MyProject
的项目,该项目包含两个模块:CoreModule
和 WebModule
。在本地硬盘上,MyProject
的根目录可能看起来像这样:
MyProject/ //项目根目录
|-- .idea/
|-- CoreModule/ //模块内容根目录(Content Root)
| |-- src/
| | |-- main/
| | | |-- java/ (CoreModule 的源代码)
| | | |-- resources/ (CoreModule 的资源文件)
| |-- test/
| |-- CoreModule.iml
|-- WebModule/ //模块内容根目录(Content Root)
| |-- src/
| | |-- main/
| | | |-- java/ (WebModule 的源代码)
| | | |-- resources/ (WebModule 的资源文件)
| |-- test/
| |-- WebModule.iml
|-- MyProject.iml
在这个例子中,MyProject
是项目根目录,而 CoreModule
和 WebModule
则分别有自己的内容根目录。每个模块的内容根目录下进一步细分了源代码目录、测试代码目录和资源文件目录。
1.4 总结:
通过 IntelliJ IDEA 的项目结构设置,你可以轻松地管理这些目录和它们的依赖关系,从而确保项目的构建和运行符合预期。
2. 路径概念:
2.1 首先,我们回顾一下目录概念:
- 项目根目录(Project Root)
项目根目录是整个项目在本地硬盘上的顶层目录。它包含了项目所需的所有文件和子目录,如源代码、构建文件、配置文件等。在 IntelliJ IDEA 中,当你打开一个项目时,这个项目根目录就是你在文件系统中选择的目录。 - 内容根目录(Content Root)
内容根目录是存储模块文件(如源代码、资源等)的目录。在 IntelliJ IDEA 中,每个模块(Module)可以有自己的 Content Root。Content Root 是模块层次结构中的顶层目录,它包含了该模块的所有相关文件和子目录。 - 源根目录(Source Root)
源根目录(Source Root)**:Source Root 是 Content Root 下的一个特殊类型的目录,用于存放源代码文件。在 IntelliJ IDEA 中,Source Root 用作包层次结构的根,例如 Java 源代码通常直接放在 Source Root 目录下。一个 Content Root 下可以有多个 Source Root,它们可以有不同的类型,如src
、test
、resources
等,用于区分不同类型的源代码或资源文件。
2.2 接下来,我们讨论路径概念:
- 内容根路径(path from content root):这是从内容根目录到特定文件的路径。例如,如果
src
是 Content Root,那么src/main/resources/com/itheima/mapper/UserMapper.xml
就是相对于 Content Root 的路径。 - 源根路径(path from source root):这是从源根目录到特定文件的路径。对于 MyBatis 的映射文件,它们通常存放在资源目录(如
src/main/resources
)下,该目录被标记为 Source Root。因此,com/itheima/mapper/UserMapper.xml
就是相对于该 Source Root 的路径。
2.3 MyBatis 示例
假设你有一个基于 Maven 的 MyBatis 项目,其结构如下:
MyBatisProject/ (项目根目录)
|-- .idea/
|-- pom.xml
|-- src/ (Content Root)
| |-- main/
| | |-- java/ (Source Root for Java sources)
| | | |-- com/
| | | |-- itheima/
| | | |-- mapper/
| | | |-- UserMapper.java
| | |-- resources/ (Source Root for resources)
| | |-- com/
| | |-- itheima/
| | |-- mapper/
| | |-- UserMapper.xml
|-- MyBatisProject.iml (项目模块文件)
在这个例子中:
- 项目根目录 是
MyBatisProject/
。 - 内容根目录 是
src/
,它包含了项目的所有源代码和资源文件。 - 源根目录 有两个:
src/main/java/
用于 Java 源代码,src/main/resources/
用于资源文件(如 MyBatis 映射文件)。 - 内容根路径(对于
UserMapper.xml
)是src/main/resources/com/itheima/mapper/UserMapper.xml
。 - 源根路径(对于
UserMapper.xml
)是com/itheima/mapper/UserMapper.xml
,这是从src/main/resources/
这个源根目录开始的相对路径。
在 MyBatis 的配置中,你通常会使用源根路径来引用映射文件。例如,在 mybatis-config.xml
文件中:
<configuration>
<mappers>
<mapper resource="com/itheima/mapper/UserMapper.xml"/>
</mappers>
</configuration>
这里的 resource
属性期望的是相对于类路径(classpath)的资源路径,这通常与源根路径相对应。当 IntelliJ IDEA 构建项目时,它会确保这些源根目录下的文件被包含在类路径中,从而 MyBatis 能够正确地加载映射文件。
2.4 总结:
了解这些路径概念对于在 IntelliJ IDEA 中正确配置和管理 MyBatis 项目是非常重要的。它们帮助开发者清晰地组织项目结构,并确保文件能够被正确地引用和加载。
一文搞懂idea中的根目录和路径(以Mybatis为例)的更多相关文章
- 一文搞懂 js 中的各种 for 循环的不同之处
一文搞懂 js 中的各种 for 循环的不同之处 See the Pen for...in vs for...of by xgqfrms (@xgqfrms) on CodePen. for &quo ...
- 一文搞懂--Java中重写equals方法为什么要重写hashcode方法?
Java中重写equals方法为什么要重写hashcode方法? 直接看下面的例子: 首先我们只重写equals()方法 public class Test { public static void ...
- 一文搞懂 SLAM 中的Extension Kalman Filter 算法编程
作者 | Doreen 01 问题描述 预先知道事物未来的状态总是很有价值的! √ 预知台风的路线可以避免或减轻重大自然灾害的损失. √ 敌国打过来的导弹,如果能够高精度预测轨迹,就能有效拦截. √ ...
- 一文搞懂Python中的所有数组数据类型
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- 一文搞懂 Java 中的枚举,写得非常好!
知识点 概念 enum的全称为 enumeration, 是 JDK 1.5 中引入的新特性. 在Java中,被 enum关键字修饰的类型就是枚举类型.形式如下: enum Color { RED, ...
- 一文搞懂js中的typeof用法
基础 typeof 运算符是 javascript 的基础知识点,尽管它存在一定的局限性(见下文),但在前端js的实际编码过程中,仍然是使用比较多的类型判断方式. 因此,掌握该运算符的特点,对于写出好 ...
- 一文搞懂│php 中的 DI 依赖注入
目录 什么是 DI / 依赖注入 依赖注入出现的原因 简单的依赖注入 高阶的依赖注入 依赖注入的应用 依赖注入高阶优化 什么是 DI / 依赖注入 依赖注入DI 其实本质上是指对类的依赖通过构造器完成 ...
- 一文搞懂│mysql 中的备份恢复、分区分表、主从复制、读写分离
目录 mysql 的备份和恢复 mysql 的分区分表 mysql 的主从复制读写分离 mysql 的备份和恢复 创建备份管理员 创建备份管理员,并授予管理员相应的权限 备份所需权限:select,r ...
- 一文彻底搞懂Java中的环境变量
一文搞懂Java环境变量 记得刚接触Java,第一件事就是配环境变量,作为一个初学者,只知道环境变量怎样配,在加上各种IDE使我们能方便的开发,而忽略了其本质的东西,只知其然不知其所以然,随着不断的深 ...
- 三文搞懂学会Docker容器技术(中)
接着上面一篇:三文搞懂学会Docker容器技术(上) 6,Docker容器 6.1 创建并启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] --na ...
随机推荐
- Pandas分析泰坦尼克号生还比例
提出问题 影响乘客生还的因素很多,这里只对乘客的性别.年龄.乘客等级.这三个因素感兴趣, 看看这四个因素是否会影响乘客的生还率. 1.性别是否会影响生还率 2.年龄是否会影响生还率 3.乘客等级会否会 ...
- python 学习随笔1121
Python 数据处理几个好用又简单的库: json re string pandas 与系统交互: subprocess os
- Optional 详解
1 前言 Optional 是 Java 8 的新特性,专治空指针异常(NullPointerException, 简称 NPE)问题,它是一个容器类,里面只存储一个元素(这点不同于 Conllect ...
- ORA-14550错误解决方法
工作中修改临时表,报错: ---------------------------------- 以SYSDBA身份登录,执行以下语句: select a.sid, a.serial#, ...
- Oracle ascii函数
一 简介 Oracle ascii函数用于返回单个字符的数字代号. 二 语法 ASCII( single_character ) 参数说明: 代表只能输入单个字符,如果输入多个,oracle只会返 ...
- error C2039: "function": 不是 "std" 的成员的解决方法
这个错误通过某度没找到合适的解决方案,故记录下来 其实如果使用 google 搜索错误的英文关键词,大概第一条就是解决问题的链接 Large number of "'function' is ...
- [Android 逆向]绕过小米需插卡安装apk限制
1. 确保自己手机是root的了 2. 给手机安装busybox,使可以用vi编辑文件 安装方法: 0. adb shell getprop ro.product.cpu.abi 获得 cpu架构信息 ...
- Linux驱动开发笔记(四):设备驱动介绍、熟悉杂项设备驱动和ubuntu开发杂项设备Demo
前言 驱动的开发需要先熟悉基本概念类型,本篇讲解linux杂项设备基础,还是基于虚拟机ubuntu去制作驱动,只需要虚拟机就可以尝试编写注册杂项设备的基本流程. linux三大设备驱动 字符设 ...
- vue 前端自动打开文件地址进行下载
最近在做异步导出的功能,导出的过程中前端另外启动一个查询导出进度的线程接口.如果导出完成后,把生成的文件上传到服务器,返回给前端一个文件的下载地址:前端自动打开这个地址进行跳转下载. 有两种方式 1. ...
- 安装SQL Server 具有不支持的属性(Compressed)集。
安装sqlserver 2014报错信息 D:\Program Files\Microsoft SQL Server 具有不支持的属性(Compressed)集.请通过使用文件夹属性对话框从该文件夹中 ...