转自:https://www.cnblogs.com/bityinjd/p/9284378.html
Facet的作用就是配置项目框架类支持。
比如我们现在要开发的是一个 web 项目,那就需要 web 相关的 Facet,事实上,如果没有这个配置支持,编译器也不知道这个项目是个 web 项目,也就不会去读取 web.xml 的配置,更无法被 tomcat 这种容器支持。
Artifacts,它的作用是整合编译后的 java 文件,资源文件等。但是有不同的整合方式。比如war、jar、war exploded 等,对于 Module 而言,有了 Artifact 就可以部署到 web 容器中了。其中 war 和 war exploded 区别就是后者不压缩,开发时选后者便于看到修改文件后的效果。
目录关系:
Project compilerc output 目录,这个是整个 Project 的编译输出目录
具体某个Module下的Compiler output,可以选择继承 Project 或者自定义输出目录
Artifacts 也有一个 Output Directory
首先Artifacts的目录是跟容器有关的,也就是说我们将web项目部署到某个目录上。
在容器运行的时候,前两者中起作用的那个(个体配置优先)的 classes 文件
复制到 Artifacts 配置的目录的 WEB-INF
下边,然后把 Module 的 Facet 里的资源文件目录
复制到 Artifacts
目录里,再就将 lib 下的 jar 包
复制到 WEB-INF
下,之后项目就可以启动了。