在idea中使用使用maven创建工程,此时创建的工程main目录下并不包含webapp文件夹

右击新建webapp文件夹,该文件夹在部署时将被视为web应用的根目录

在该文件夹下创建WEB-INF文件夹,该目录下的内容是无法在浏览器通过URL直接访问的,所以jsp文件一般放在该目录下,除此之外,在部署时,该文件下还会包括classes文件夹,用于存放模块中编译好的class文件;lib文件夹,用于存放模块所依赖的jar包和war包;此外,当模块使用web.xml进行配置时,web.xml文件也将存放于此。

现在的模块已经具有web应用的基本目录结构了,接下来配置模块的Project Structrue

在facets面板下可以将模块配置为web应用

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

将模块添加为web应用

idea默认会在模块目录下创建\web\WEB-INF文件夹,并在该文件夹下创建web.xml文件。Servlet3.0标准以后的容器是可以不需要web.xml文件的。当然,如果模块中配置了web.xml文件,web.xml文件对应的存放目录应该是上面已经创建好的\webapp\WEB-INF,此处也要做相应修改,如果没有配置web.xml文件,可以直接点右边的红色减号把该项删除

默认的配置会在模块路径下创建web文件夹,并将其作为模块在部署时应用的根目录

将其修改为之前创建好的webapp文件夹

在facets面板的最后会出现警告,该警告涉及到artifact面板的配置,将目前的配置apply,接下来转到artifact面板

artifact是maven中的一个概念,表示模块的构建方式,比如我们可以将模块构建成jar,war,war exploded,ear等类型,其中war exploded是idea提供的一种可用于热部署的打包类型。

 一个模块有了artifact就可以部署到web应用服务器上了。

点击"+"号,新建模块的构建方式(Web Application:Exploded),由于上面在facets面板中已经将模块中配置成web应用,所以在这里可以选择"From Modules..."

选中模块,点击OK

Output directory指定构建的路径,如果我们选择的构建方式是Web Application:Archive,就是war包形式,模块构建后就会在该目录下生成一个war包,由于我们选择的是Web Application:Exploded,这个是以文件夹形式(War Exploded)发布。

此处再阐述下构建成war包和构建成文件夹形式的区别:拿war包来说,如果将一个war包放到Tomcat一类的Servlet容器中,启动容器时,容器会自动将war包自动解压成文件夹。为了方便热部署,Exploded方式直接将模块构造成文件夹形式,省去了打包的过程。

所以此处的Output directory即Exploded所在文件夹的目录

此处会有一个WEB-INF文件夹,该文件夹下默认会有一个classes子目录,该目录会用于存放的class文件。但模块在编译后并非直接将编译好的class文件存放于此,在Project面板和Modules面板中可以配置编译好的class文件的输出路径。在构建时,这些class文件才会被拷贝出来,存放到该classes自目录中。

在Project面板中可以配置class文件的输出路径可编译所使用的jdk

在Modules中还可以进一步配置Output Path和Test output path,当然这和我们现在所谈到的Artifacts并无太大关系,只是Artifact中的classes文件夹中的class文件都是从这些路径拷贝出来的而已

回到Artifact面板,除了classes目录外,这里还会有一个lib文件夹,存放模块的依赖包,我在pom文件中已有引用到某些依赖,所以idea自动检测这些依赖并将其添加到了lib下。

但是有时lib文件夹并不会自动创建,我们也可以手动创建:

再手动将依赖包添加进去:

整个Project(项目)的依赖在Libraries面板下可以进行相关配置,pom文件所依赖的包和从外部依赖的包在此处都有显示出来

由于一个大的Project(项目)又可以分为多个Module(模块),在Modules面板下的Dependencies选项下,又可以将依赖指定到相应的模块。

回到Artifact面板,由于在创建Artifact时,idea自动引入了‘Web’ facet resources ,这些内容也就是对应src/main/java和src/mian/resources目录下存放的内容

回到facets面板,可以发现之前的黄色警告已经消失了

至此,配置Artifact完成。

配置Tomcat容器时就有Artifact选项了

最后再补充一下,构建Artifact时,除了处理classes和lib下的内容外,webapp下的其余所有内容也会被复制到构建文件夹下,如 :我们可能会在webapp下放置静态文件,在WEB-INF下存放jsp文件等等,这些内容都会被复制。

参考:

https://www.cnblogs.com/poilk/p/6529347.html

https://blog.csdn.net/xiaobudingCC/article/details/79108267

Intellij idea 解决no artifacts warnings和部署后报404问题:创建Artifact相关推荐

  1. 理解 IntelliJ IDEA 的项目配置和Web部署

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:dulk cnblogs.com/deng-cc/p/6416332.html 1.项目配 ...

  2. 如何在 IntelliJ IDEA 中整合 Maven、Tomcat 部署 Web 应用

    如何在 IntelliJ IDEA 中整合 Maven.Tomcat 部署 Web 应用 笔者的环境: JDK 11.0.12 Maven 3.6.3 Tomcat 9.0.41(Servlet 4. ...

  3. 终于解决 k8s 集群中部署 nodelocaldns 的问题

    终于解决 k8s 集群中部署 nodelocaldns 的问题 参考文章: (1)终于解决 k8s 集群中部署 nodelocaldns 的问题 (2)https://www.cnblogs.com/ ...

  4. 使用七牛云存储解决ios7.1的app部署问题 https

    2019独角兽企业重金招聘Python工程师标准>>> 使用七牛云存储解决ios7.1的app部署问题 一.问题描述 开发完iOS版本的app.需要将.ipa文件和.plist文件打 ...

  5. 使用七牛云存储解决ios7.1的app部署问题

    使用七牛云存储解决ios7.1的app部署问题 一.问题描述 开发完ios版本的app.需要将.ipa文件和.plist文件打包上传,供用户下载,在线安装.用户安装过程简单描述如下: 首先通过手机浏览 ...

  6. 【IDEA系列】详述使用 IntelliJ IDEA 解决 jar 包冲突的问题

    详述使用 IntelliJ IDEA 解决 jar 包冲突的问题 在实际的 Maven 项目开发中,由于项目引入的依赖过多,遇到 jar 冲突算是一个很常见的问题了.在本文中,我们就一起来看看,如何使 ...

  7. 详述使用 IntelliJ IDEA 解决 jar 包冲突的问题

    在实际的 Maven 项目开发中,由于项目引入的依赖过多,遇到 jar 冲突算是一个很常见的问题了.在本文中,我们就一起来看看,如何使用 IntelliJ IDEA 解决 jar 包冲突的问题!简单粗 ...

  8. 使用IntelliJ IDEA解决Java包冲突

    使用IntelliJ IDEA解决Java包冲突 在实际的 Maven 项目开发中,由于项目引入的依赖过多,遇到 jar 冲突算是一个很常见的问题了.那么,在这种情况下我们采用什么样的方式来解决Jav ...

  9. kafka集群部署成功后,创建生产者往指定主题里面发送消息时出错

    问题描述:kafka集群部署成功后,创建生产者往指定主题里面发送消息时出错,如下所示: 解决方法:在kafka的server.properties配置文件中需要打开listenners配置行,不要使用 ...

最新文章

  1. jquery API
  2. Java位运算在程序设计中的使用:位掩码(BitMask)
  3. JAVA并发-为现有的线程安全类添加原子方法
  4. python 网关配置界面代码_Linux下使用python自动修改本机网关代码分享
  5. Android开发三 如何安装 Android SDK 和Eclipse 插件
  6. Lucene学习之——停用词
  7. JDK 是如何判断两个对象是否相同的?判断的流程是什么?
  8. python布尔类型运算_9.python的布尔类型与流程控制
  9. android photopicker怎么修改状态栏,有没有办法阻止UIImagePickerController更改状态栏样式?...
  10. 递归Java_递归的Java实现
  11. Apache Kylin 与 ClickHouse 的对比
  12. c语言谭浩强ppt课件,编程_C语言学习课件_谭浩强_PPT~1216F.ppt
  13. 关键词组合工具_8大工具组合出击,解决扩量难题
  14. Git submodule使用指南(二)
  15. SRE实战手册-基础篇
  16. ffmpeg命令分析-b:v
  17. 惊呆了!难道还有这么云盘的软件???再也不怕视频被和谐了!!
  18. 学习笔记,梯度下降(非向量实现)
  19. 惊呆!编程就像写文档!开发神似搭积木!
  20. python带你采集桌游、剧本杀游戏店数据信息~

热门文章

  1. 140多位顶尖科学家致信 扎克伯格拒绝对特朗普脸书“宣扬暴力”言论采取行动...
  2. 学分,选够了吗? Alpha冲刺阶段
  3. 提高写作能力的15条技巧和建议
  4. AI软件写作实战测试:写作技巧 - 让智能写作助手变得更加智能化?
  5. 【Linux8系统学习】使用RAID与LVM磁盘陈列技术(一)
  6. “潜意识”有超潜能吗?
  7. 【笔记】三张图读懂机器学习:基本概念、五大流派与九种常见算法
  8. 为什么网络掩码一定是255.255.255.0(/24)
  9. 澎湖渔船捕获多尾超大野生虱目鱼 比养殖鱼大10倍
  10. PHP各大音乐平台API接口下载,PHP各大音乐平台API接口