在利用 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 的文件夹类别
Content Root 目录中的文件夹可以分配到以下类别:
-
源根 (或源文件夹;显示为)。
通过分配一个文件夹到这个类别,告诉IntelliJ IDEA这个文件夹和它的子文件夹包含应该作为构建过程的一部分被编译的源代码。
在Java模块中,源代码根中的子文件夹代表您的Java包结构。
您可以将包前缀分配给源根(例如
com.mycompany.myapp
),而不是在该源根(例如com/mycompany/myapp
)中创建相应的文件夹结构。有关更多信息,请参阅Java源根的包前缀。在没有包前缀和子文件夹的情况下,源根将代表默认包(未命名的包)。
- 生成的源根 (或生成的源文件夹;显示为;在某些视图中 使用[生成的 文本标记])与源根目录相似。不同之处在于生成的源根目录在执行时不会被建议为目标文件夹移动类重构 或使用从使用快速修复创建类。
-
测试源根 (或测试源文件夹;如图所示)。
这些根与源代码相似,但是用于测试的代码(例如单元测试)。测试源文件夹可让您将与测试相关的代码与生产代码分开。
源和测试源的编译结果通常放在不同的文件夹中。
- 生成的测试源根 (或生成的测试源文件夹;显示为;在某些视图中 使用[生成] 文本标记)与测试源根类似。源根和生成的源根之间的差别是相同的。
-
资源根 (或资源文件夹;显示为;仅在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
。