这个是Java web 开发系列编写过程中发现的。总结性要点在最后边,中间过程不想看可跳过。

首先是 Modules,如下图所示,最开始生成的 Module 里的 jdwork,并没有把我们新生成的 webapp以及子目录放入里边,这样子的话项目在部署和启动的时候是找不到web.xml这个文件的。与此对应的是,项目目录结构中webapp没有任何标记,跟一般文件夹没区别。

这里需要我们手动添加,解决方法如下:

注意修改这两个路径为项目中的真实路径,默认路径可能不对。

修改过之后再看项目目录,就有变化了,如图

好了解决了这个问题,该讨论下一些原理性的东西了。

这里涉及到 IntelliJ Idea 的一个概念,Facet。如果注意观察的话,应该发现了,它就在 Project Structure 栏目里 Project、Modules、Libraries下面那一个,它的作用就是配置项目框架类支持。

比如我们现在要开发的是一个 web 项目,那就需要 web 相关的 Facet,事实上,如果没有这个配置支持,编译器也不知道这个项目是个 web 项目,也就不会去读取 web.xml 的配置,更无法被 tomcat 这种容器支持。

Facet 是和 Module 紧密结合的,你如果是在 Module 里配置了,那么 Facet 里边也会出现,而如果你先在 Facet 里配置,它会要求你选择 Module,所以结果是一致的。

再就是解释下 Artifacts,它的作用是整合编译后的 java 文件,资源文件等,有不同的整合方式,比如war、jar、war exploded 等,对于 Module 而言,有了 Artifact 就可以部署到 web 容器中了。其中 war 和 war exploded 区别就是后者不压缩,开发时选后者便于看到修改文件后的效果。

谈到 Artifacts,就得说一下几个输出目录的问题,Project 选项里有一个 Project compilerc output 目录,这个是整个 Project 的编译输出目录;Modules 的具体单个 Module 的 Path 选项里有个 Compiler output,可以选择继承 Project 或者自定义输出目录,如下图所示:

然后就是 Artifacts 也有一个 Output Directory,这几个的关系是怎样的呢?

前两者的关系好理解,就是一个总体和个体配置的关系。而 Artifacts 里的输出目录是跟容器有关系的,在容器运行的时候,会把前两者中起作用的那个(个体配置优先)的 classes 文件复制到 Artifacts 配置的目录的 WEB-INF下边,然后把 Module 的 Facet 里的资源文件目录复制到 Artifacts 目录里,再就是复制 lib 下的 jar 包到 WEB-INF 下,之后项目就可以启动了。

Idea中的Facets 与 Artifacts相关推荐

  1. IDEA中的facets和artifacts的介绍

    Project setting 里面Facets和Artifacts的作用 1.Facets 英文翻译为:方面,(事务的)面.表述了在Module中使用的各种各样的框架.技术和语言.这些Facets让 ...

  2. IntelliJ Idea中的 Facets 与 Artifacts

    转载自原文链接 转载自原文链接 这个是[温故知新] Java web 开发系列编写过程中发现的.总结性要点在最后边,中间过程不想看可跳过. 首先是 Modules,如下图所示,最开始生成的 Modul ...

  3. IDAE中Modules, Facets 和 Artifacts 的作用及区别

    可以先看另一篇文章 "理解 IntelliJ IDEA 的项目配置和Web部署" 一.Modules Content Root:是包含组成Module的所有文件的文件夹.一个Mod ...

  4. IDEA中Facets和Artifacts配置说明

    1.File->Project Structure->Facets Facets:英文翻译"(事物的)方面特征",表述了在module(项目/模块/组件)中使用的各种各 ...

  5. Intellij IDEA的Facets和Artifacts

    Facets: Facets表述了在Module中使用的各种各样的框架.技术和语言.这些Facets让Intellij IDEA知道怎么对待module内容,并保证与相应的框架和语言保持一致. 使用F ...

  6. eclipse 中 project facets

    阅读数:2347 facets中文翻译为:(事物的)面,方面 在eclipses中的facets可以理解为:项目的特性,某一方面功能.主流 IDE (Eclipse IDEA) 都提供了 facet ...

  7. IDEA的打断点以及facets和artifacts的讲解以及Datebase 使用技巧

    清空所有断点 1.在idea左下方找到"View Breakpoints"按钮,点击打开 2.点击"Java Line Breakpoints"前方的全选框,取 ...

  8. IntelliJ IDEA创建web项目及异常问题解决

    IDEA配置Tomcat: 1.下载Tomcat,本次使用的是apache-tomcat-6.0.43 2.IDEA配置Tomcat 在idea中的Settings(Ctrl+Alt+s)(或者点击图 ...

  9. Gradle-jar-aar

    Ref:Android Studio系列教程 Ref:Android Studio系列教程四--Gradle基础 Ref:Intellij IDEA 14.x 中的Facets和Artifacts的区 ...

最新文章

  1. 每日一皮:在调试时,将断点设置在错误的位置...
  2. 局域网电脑间互相访问的问题?
  3. TS2003基于触摸屏的应用
  4. 数据中心巡检实操之UPS及电池
  5. JavaScript 里 window, document, screen, body 这几个名词的区别
  6. java在线用户查看_java Session统计在线用户,并且显示在线用户
  7. 【今日头条】【抖音火山】前端开发实习生
  8. 计算机维修实训报告模板,[计算机维修实验报告模板.doc
  9. linux yum源码安装mysql_linux下通过源码包安装mysql,以及yum安装
  10. aiohttp/flask python后端单元测试,单元测试覆盖率测试
  11. VS2017控制台打印问题
  12. CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)
  13. 两个年月下拉列表html,html年月日下拉联动菜单 年月日三下拉框联动
  14. 2008服务器系统开机用户名和密码忘记了,服务器2008密码忘记了
  15. 工业相机的50个知识点
  16. 游戏对战平台研究终结篇【转】
  17. 如何修改docker容器的hostname
  18. 理解margin-left:-100%
  19. 魔法成为现实?武大学生团队造出了“隐身衣”,成本不到 500 元
  20. QT qrand()随机函数不随机?

热门文章

  1. Java面试题2021,华为java工程师工资
  2. 图解 Python 编程(17) | 集合(附要点速查表·完结)
  3. python画图代码的输入数据可以取出来_python 导入数据及作图的实现
  4. windows环境下如何判断1521服务端是否开启
  5. 网络安全行业相关证书
  6. C语言——简单的五子棋小游戏开发设计
  7. java repaint 速度,java repaint()
  8. 洛谷 P4568 [JLOI2011] 飞行路线(分层图最短路)
  9. Virmach Los Angeles洛杉矶机房测评
  10. Android Looper