在利用IDEA导入SSM项目后,发现应用程序中使用的资源文件(图像,各种配置XML和属性文件)加载不了,但是项目本身没有问题,在寻找之后发现IDEA有一个Content Root的概念,在导入项目时,倘若有资源文件加载不了,可以通过设置Content Root来解决这一个问题。
官方文档:https://www.jetbrains.com/help/idea/2016.2/content-root.html
Content Root
概念
Content Root是一个包含组成模块(Module)的所有文件的文件夹。
一个模块可以有多个Content Root,但是在大多数情况下,一个Content Root就足够了。(在某些情况下,没有Content Root的模块可能是有用的)
IntelliJ IDEA中的 Content Root 目录显示为
Content Root的文件夹类别
源根(或源文件夹;显示为)
通过分配一个文件夹到这个类别,告诉IntelliJ IDEA这个文件夹和他的子文件夹包含应该作为构建过程的一部分被编译的源代码。
在java模块中,源代码根中的子文件夹代表您的java包结构
您可以将包前缀分配给源根(例如com.mycompany.myapp),而不是在该源根(例如com/mycompany/myapp)中创建相应的文件夹结构。有关更多信息,请参阅Java源根的包前缀。
在没有包前缀和子文件夹的情况下,源根将代表默认包(未命名的包)
生成的源根(或生成的源文件夹;显示为;在某些视图中 使用[生成的 文本标记])与源根目录相似。不同之处在于生成的源根目录在执行时不会被建议为目标文件夹移动类重构 或使用从使用快速修复创建类。
测试源根(或测试源文件夹)
这些根与源代码相似,但是用于测试的代码(例如单元测试)。测试源文件夹可以让您将与测试相关的代码与生产代码分开。
生成的测试源根(或生成的测试源文件夹;在某些视图中 使用[生成]文本标记)与测试源根类似。源根和生成的源根之间的差别是相同的
资源根(或资源文件夹)用于应用程序(图像,各种配置XML和属性文件等)中使用的资源文件
在生成过程中,资源文件夹的所有内容都按原样复制到输出文件夹
与源代码类似,您可以指定生成资源。您还可以指定应将资源复制到的输出文件夹中的哪个文件夹
- 测试资源根 (或测试资源文件夹;显示为 ;仅在Java模块中可用)用于与测试源关联的资源文件。在所有其他方面,这些文件夹与资源文件夹类似。
- 排除的根 (显示为 )是IntelliJ IDEA“几乎忽略的”。
为排除的文件夹中的文件提供非常有限的编码帮助。包含在排除的文件夹中的类不会出现在代码完成建议列表中,在编辑器中对这些类的引用显示为未解析。搜索时,IntelliJ IDEA不会查找排除的文件夹等。
制作内容不重要的文件夹可以提高IDE的性能。
通常排除的是编译输出文件夹。
没有 Content Root 的模块:依赖集合
一个模块可以单独作为一个集合使用 其他模块的依赖关系。在这种情况下,不要单独指定必要的依赖项,而是可以在相应的模块上添加依赖项。
显然,用于这种目的的模块不需要 Content Root 。
Java源根的包前缀
包前缀指定哪个Java包与一个文件夹相对应,并且可以分配给以下类别的Java源根:
如果指定,则包前缀作为相应的文件夹结构的等价物,否则必须创建该文件夹结构。
为了说明,我们假设你将要使用这个com.mycompany.myapp
包。在没有包前缀的情况下,您可以com/mycompany/myapp
在相应的源根文件夹(例如src
)中创建文件夹结构。
另一种方法是分配com.mycompany.myapp
到src
作为其包前缀和相应的类存储权src
。