一文搞懂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 ...
随机推荐
- NC51032 八数码
题目链接 题目 题目描述 The 15-puzzle has been around for over 100 years; even if you don't know it by that nam ...
- Dubbo本地调试方法
方法一:用版本号来区分 比如,开发环境上跑的服务版本是1.0.0,那么为了在本地打断点调试某个服务,可以在本地启动,将version设置为2.0.0 服务提供者 @DubboService(versi ...
- 如何在C#中使用 Excel 动态函数生成依赖列表
前言 在Excel 中,依赖列表或级联下拉列表表示两个或多个列表,其中一个列表的项根据另一个列表而变化.依赖列表通常用于Excel的业务报告,例如学术记分卡中的[班级-学生]列表.区域销售报告中的[区 ...
- 如何保证消息顺序执行(Rabbitmq/kafka)
转载: https://www.cnblogs.com/-wenli/p/13047059.html https://www.jianshu.com/p/02fdcb9e8784
- java日期中YYYY与yyyy的区别
date==>string string ==>date 总结: 个人觉得:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年.这个结论在正向转换的时候是 ...
- 【Azure Developer】Go语言调用Azure SDK如何登录到中国区Azure环境
问题描述 在 "使用 Azure SDK for Go 进行 Azure 身份验证" 文章中的 Go 示例代码进行登录Azure时,默认指向的是Globa Azure.当只修改AA ...
- 浅入 ABP 系列教程目录汇总
浅入ABP(1):搭建基础结构的 ABP 解决方案 https://www.cnblogs.com/whuanle/p/13675889.html 浅入ABP(2):添加基础集成服务 https:// ...
- 浅入 ABP系列(3):增加日志组件、依赖注入服务
目录 自动依赖注入 添加日志依赖 添加日志功能 依赖注入 版权护体作者:痴者工良,微信公众号转载文章需要 <NCC开源社区>同意. 前面两篇我们搭建了一个基础的.简单的,具有统一响应格式的 ...
- 隐藏在 Nebula Graph 背后的星辰大海
本文首发于 Nebula Graph Community 公众号 作者介绍 大家好,我是 Anyzm,graph-ocean(GitHub:https://github.com/nebula-cont ...
- C++ STL 容器-Deque
C++ STL 容器-Deque std::deque(双端队列)是C++标准模板库(STL)中的一个容器,它支持在序列的两端快速插入和删除元素.与std::vector和std::list等其他序列 ...