周末在捣鼓SpringMVC,用IDEA创建了个maven-archetype-webapp项目以供接下来的研究学习。在配置<context:component-scan/> 的 base-package 属性时(启用对类包进行扫描),才发现在main文件夹下没有Java源文件夹,刚创建好的项目结构如下图,
于是着手创建,右键->New->Directory,输入文件夹名Java,创建完成,现在才是标准Maven项目的结构。
创建好文件夹后就要创建Java类包了,但这时候点击右键->New,是没有创建Package(也没有Java Class)的选项的。为什么呢,其实根据IntelliJ IDEA的图标(参考IntelliJ IDEA官网文件类型图标介绍)也能判断,我们刚才创建的是一个普通的文件夹,而不是Java源文件夹。源文件夹是用来专门放 Java 类文件的地方,相对于编译出来的 class 文件而言,它就是源。它的作用是标记该目录下的文件是可编译的。如果Java 类文件没有放在该目录或是该目录的子包下,那该 Java 类则无法编译的(Java class located out of the source root)。因此,当你需要建立一个package时,它是自动建立到源文件夹下,也只能建立在这个目录之下。所以得想办法把这个普通文件夹转换成Java源文件夹。
按快捷键Ctrl+Alt+Shift+S打开Project Structure,点击Moudles,找到刚才创建的文件夹,右键,选择Sources文件夹变成蓝色,设置完成。或者通过点击下图箭头所指的Marks as Sources来设置。当然,有些朋友可能已经看到旁边的快捷键Alt+S了,三种方法效果是一样的。
在源文件夹里就能创建Package和Java Class了。
下面内容摘抄自极客学院的Eclipse 的 Java Web 项目环境搭建
Sources
一般用于标注类似src
这种可编译目录。有时候我们不单单项目的src
目录要可编译,还有其他一些特别的目录也要作为可编译的目录,就需要对该目录进行此标注。只有Sources
这种可编译目录才可以新建 Java 类和包,这一点需要牢记。Tests
一般用于标注可编译的单元测试目录。在规范的 maven 项目结构中,顶级目录是src
,maven 的src
我们是不会设置为Sources
的,而是在其子目录main
目录下的java
目录,我们会设置为Sources
。而单元测试的目录是src - test - java
,这里的java
目录我们就会设置为Tests
,表示该目录是作为可编译的单元测试目录。一般这个和后面几个我们都是在 maven 项目下进行配置的,但是我这里还是会先说说。从这一点我们也可以看出 IntelliJ IDEA 对 maven 项目的支持是比较彻底的。Resources
一般用于标注资源文件目录。在 maven 项目下,资源目录是单独划分出来的,其目录为:src - main -resources
,这里的resources
目录我们就会设置为Resources
,表示该目录是作为资源目录。资源目录下的文件是会被编译到输出目录下的。Test Resources
一般用于标注单元测试的资源文件目录。在 maven 项目下,单元测试的资源目录是单独划分出来的,其目录为:src - test -resources
,这里的resources
目录我们就会设置为Test Resources
,表示该目录是作为单元测试的资源目录。资源目录下的文件是会被编译到输出目录下的。Excluded
一般用于标注排除目录。被排除的目录不会被 IntelliJ IDEA 创建索引,相当于被 IntelliJ IDEA 废弃,该目录下的代码文件是不具备代码检查和智能提示等常规代码功能。- 通过上面的介绍,我们知道对于非 maven 项目我们只要会设置
src
即可。