IDEA Java项目的目录结构为什么要是 src/main/java 形式?
起源
每次新建项目时,都很好奇为什么Java文件需要放到项目下的 src/main/java
下?
Interllij IDEA 仿佛自带“魔力”,在项目下新建目录时,会自动提示还未存在的目录结构(Maven Source Directories),并提供一键新建目录功能。
解释
Maven项目目录结构的解释
关于Maven项目的Maven Source Directories的解释:
- src:翻译为source,表示源代码目录的根目录。
- main:表示主要的代码目录,用于存放项目的主要功能代码。
- java:表示Java代码的目录,用于存放Java类和包。
- src/test/java:提供一个专门的位置用于编写和管理项目的单元测试、集成测试或其他类型的测试代码。
- src/test/resources:提供一个专门的位置,用于存放测试过程中所需的资源文件。
总结:这种目录结构其实是一种约定,src/main/java是一种常见的源代码目录结构约定,它遵循了Maven项目的标准布局。而idea内置功能在识别到项目为maven项目时,做新建目录操作时就会按照约定提供一键新建目录功能。
需要注意的是,src/main/java只是一种约定,并非强制规定。在某些特定情况下,可以根据项目需求进行自定义的目录结构,但建议遵循这种约定以保持代码的一致性和可读性。
常见的源代码目录结构约定
- src/main/kotlin:用于Kotlin项目的源代码目录。与Java项目的约定类似,Kotlin项目通常将源代码放在
src/main/kotlin
目录下。 - src/main/scala:用于Scala项目的源代码目录。Scala是一种运行在Java虚拟机上的编程语言,它也有类似于Java和Kotlin的目录结构约定。
- src/main/python:用于Python项目的源代码目录。Python项目通常将源代码放在
src/main/python
目录下,以区分其他类型的文件,例如配置文件或测试代码。 - src/main/resources:用于存放项目的资源文件,如配置文件、静态文件、模板等。这个目录通常与源代码目录(如
src/main/java
)平行存在。 - src/test/java:用于存放测试代码的目录。测试代码通常位于
src/test/java
目录下,它与主要代码目录(如src/main/java
)有类似的结构。 - src/test/resources:用于存放测试所需的资源文件,例如测试数据、配置文件等。与测试代码目录(如
src/test/java
)平行存在。
实测
src/main/java中的Java代码如何获取到src/main/resources下的文件信息
目前项目的目录结构如下,有一个Java类(ProjectStructure
)、一个resource资源文件(jdbc.properties
)。
jdbc.properties
文件信息如下:
现在想从ProjectStructure
类中获取 jdbc.properties
文件的 jdbc.driver 属性值,Java代码如下:
1 | public static void main(String[] args) throws IOException { |
输出结果为:
结论:
- IDEA 中的所有文件(包括 Java 程序文件和资源文件)都是从“项目根目录”开始查找的。
- Java 程序文件除了从“项目根目录”查找,还会从“类路径”查找。
Java获取资源文件信息的方法:Java如何获取资源文件的输入流
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WrayのBlog!
评论