首页 > 其他分享 >一文搞懂idea中的根目录和路径(以Mybatis为例)

一文搞懂idea中的根目录和路径(以Mybatis为例)

时间:2024-03-21 12:33:25浏览次数:26  
标签:src 为例 -- 项目 根目录 搞懂 源代码 Root

1.根目录概念:

1.1 项目根目录(Project Root)

  • 项目根目录是你在文件系统中为整个项目选择的顶层目录。
  • 它通常包含了项目的所有内容,包括源代码、构建配置文件、文档、测试文件等。
  • 在版本控制系统中(如 Git),项目根目录通常是仓库的根目录。

1.2 内容根目录(Content Root)

  • 在 IntelliJ IDEA 或其他 JetBrains IDE 中,内容根目录指的是一个模块(Module)的文件系统根目录。
  • 它通常包含该模块的源代码、资源文件、测试代码等。
  • 内容根目录是相对于 IntelliJ IDEA 项目而言的,并不等同于文件系统上的项目根目录。
  • 一个项目可以包含多个模块,每个模块可以有自己的内容根目录。

关于源代码的存放:

  • 源代码通常存放在内容根目录下的一个或多个源根目录中。在 Maven 或 Gradle 等构建工具的项目结构中,源代码通常放在 src/main/java 这样的目录下。
  • src/main/java 这样的目录会被标记为源根目录(Source Root),意味着 IntelliJ IDEA 会将其中的文件识别为 Java 源代码,并提供相应的代码编辑、编译和导航功能。

两者的关系

  • 项目根目录是一个更大的概念,它包含了整个项目的所有内容。
  • 内容根目录是 IntelliJ IDEA 中模块级别的概念,它位于项目根目录之下,并包含模块特定的文件和目录结构。

在实际的 MyBatis 项目中,源代码(如 Java 类)通常放在 src/main/java 目录下,而 MyBatis 的映射文件(如 .xml 文件)通常放在 src/main/resources 目录下。这两个目录都是源根目录,但它们存放的文件类型不同。在 IntelliJ IDEA 中,你可以通过模块设置来配置这些源根目录。

希望这个解释能够更清晰地阐述项目根目录和内容根目录以及源代码存放的概念。

1.3 示例

假设你有一个名为 MyProject 的项目,该项目包含两个模块:CoreModuleWebModule。在本地硬盘上,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 是项目根目录,而 CoreModuleWebModule 则分别有自己的内容根目录。每个模块的内容根目录下进一步细分了源代码目录、测试代码目录和资源文件目录。

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,它们可以有不同的类型,如 srctestresources 等,用于区分不同类型的源代码或资源文件。

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 项目是非常重要的。它们帮助开发者清晰地组织项目结构,并确保文件能够被正确地引用和加载。

标签:src,为例,--,项目,根目录,搞懂,源代码,Root
From: https://www.cnblogs.com/XiaYu-Ye/p/18087113

相关文章

  • 一文彻底搞懂令人疑惑的Java和JDK的版本命名!
    你对Java的版本号以及JDK的命名真正清楚嘛?比如:Java8JavaSE8.0JDK1.8……知道这些是怎么回事嘛?知道还有个Java2的说法嘛?知道还有以下说法嘛?J2SE1.3J2SE1.4……现在已经6月份了,到了9月份,一个新的长期支持版本,Java17就要发布了,啥?Java版本都到17了?不不不,我一直在用JDK......
  • Java如何修改框架源码(以ZooKeeper框架为例)
    1、缘由:在Zookeeper框架内部源码中,org.apache.zookeeper.ClientCnxn.SendThread#logStartConnect方法会打印客户端与服务器端的连接状态,如果在网络出现波动时会出现连接异常并在日志中打印出INFO级别信息【java.lang.IllegalArgumentException】,而这个关键词会触发运维告警。2......
  • JavaScript逆向之代码补环境(以iwencai为例)
    知识点1.浏览器环境与Node环境的区别1.1浏览器环境具有的功能页面渲染功能(1)加载和控制页面元素的能力->在js中由dom对象来完成(2)渲染引擎->和我们基本上无关浏览器本身的一些东西(窗口大小,url)->BOM对象能够执行js的能力->v8引擎负责执行js代码1.2Node环......
  • YOLOV5 改进:替换backbone(MobileNet为例)
    1、前言之前介绍了yolov5如何更换C2f模块以及加入注意力机制SE模块的示例,详细请参考本专栏:YOLOV5实战项目(训练、部署、改进等等)_听风吹等浪起的博客-CSDN博客本文将详细介绍yolov5更换官方backbone,以轻量级网络mobilenet为例。因为mobilenet是轻量级的小型网络,参数量和......
  • 一文搞懂IP
    IP1.基本介绍2.IP地址定义3.IP地址分类4.子网掩码5.全局地址与私有地址1.基本介绍TCP/IP协议的心脏是网络层,主要“实现节点之间的通信”,即“点对点(end-to-end)通信”。网络层包含IP(InternetProtocol)及DNS(DomainNameSystem)、ARP(AddressResolutionPro......
  • Google Earth Engine——如何实现裁剪后研究区影像的批量下载(以NDVI为例)
    简介GEE云平台(GoogleEarthEngine)是一个强大的云平台,提供了丰富的地理数据和计算资源,用于进行地理数据分析和处理。在GEE平台上,可以实现对研究区影像的单景影像(以NDVI为例)的批量下载。下面是具体的过程:1.登录GEE云平台并初始化首先,需要登录GEE云平台(https://earthengine.g......
  • 数据结构(七)并查集---以题为例
    一共有 n 个数,编号是 1∼n,最开始每个数各自在一个集合中。现在要进行 m 个操作,操作共有两种:Mab,将编号为 a 和 b 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;Qab,询问编号为 a 和 b 的两个数是否在同一个集合中;输入格式第一行输入整......
  • 【神经网络算法】一文搞懂GAN(生成对抗网络)
    本文将从GAN的本质、GAN的原理、GAN架构改进三个方面,带您一文搞懂生成对抗网络GenerativeAdversarialNetworks | GAN。一、GAN的本质GAN架构:GAN(GenerativeAdversarialNetworks,生成对抗网络)架构由两个主要组件构成:生成器(Generator)和判别器(Discriminator)。这两个组件在......
  • 【神经网络算法】一文搞懂Tokenization(分词)
    本文将从分词的本质、中英文分词、分词的方法三个方面,带您一文搞懂Tokenization(分词)。一、分词的本质核心逻辑:将句子、段落、文章这种长文本,分解为以字词为单位的数据结构。文本切分:分词是将连续的文本切分为独立的、有意义的词汇单元的过程。这些词汇单元可以是单词、......
  • 数据结构(六)串,Trie字符串统计---以题为例
    维护一个字符串集合,支持两种操作:Ix 向集合中插入一个字符串 x;Qx 询问一个字符串在集合中出现了多少次。共有 N 个操作,所有输入的字符串总长度不超过 105,字符串仅包含小写英文字母。输入格式第一行包含整数 N,表示操作数。接下来 N 行,每行包含一个操作指令,指令为......