Intellij idea 解决no artifacts warnings和部署后报404问题:创建Artifact
在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相关推荐
- 理解 IntelliJ IDEA 的项目配置和Web部署
点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:dulk cnblogs.com/deng-cc/p/6416332.html 1.项目配 ...
- 如何在 IntelliJ IDEA 中整合 Maven、Tomcat 部署 Web 应用
如何在 IntelliJ IDEA 中整合 Maven.Tomcat 部署 Web 应用 笔者的环境: JDK 11.0.12 Maven 3.6.3 Tomcat 9.0.41(Servlet 4. ...
- 终于解决 k8s 集群中部署 nodelocaldns 的问题
终于解决 k8s 集群中部署 nodelocaldns 的问题 参考文章: (1)终于解决 k8s 集群中部署 nodelocaldns 的问题 (2)https://www.cnblogs.com/ ...
- 使用七牛云存储解决ios7.1的app部署问题 https
2019独角兽企业重金招聘Python工程师标准>>> 使用七牛云存储解决ios7.1的app部署问题 一.问题描述 开发完iOS版本的app.需要将.ipa文件和.plist文件打 ...
- 使用七牛云存储解决ios7.1的app部署问题
使用七牛云存储解决ios7.1的app部署问题 一.问题描述 开发完ios版本的app.需要将.ipa文件和.plist文件打包上传,供用户下载,在线安装.用户安装过程简单描述如下: 首先通过手机浏览 ...
- 【IDEA系列】详述使用 IntelliJ IDEA 解决 jar 包冲突的问题
详述使用 IntelliJ IDEA 解决 jar 包冲突的问题 在实际的 Maven 项目开发中,由于项目引入的依赖过多,遇到 jar 冲突算是一个很常见的问题了.在本文中,我们就一起来看看,如何使 ...
- 详述使用 IntelliJ IDEA 解决 jar 包冲突的问题
在实际的 Maven 项目开发中,由于项目引入的依赖过多,遇到 jar 冲突算是一个很常见的问题了.在本文中,我们就一起来看看,如何使用 IntelliJ IDEA 解决 jar 包冲突的问题!简单粗 ...
- 使用IntelliJ IDEA解决Java包冲突
使用IntelliJ IDEA解决Java包冲突 在实际的 Maven 项目开发中,由于项目引入的依赖过多,遇到 jar 冲突算是一个很常见的问题了.那么,在这种情况下我们采用什么样的方式来解决Jav ...
- kafka集群部署成功后,创建生产者往指定主题里面发送消息时出错
问题描述:kafka集群部署成功后,创建生产者往指定主题里面发送消息时出错,如下所示: 解决方法:在kafka的server.properties配置文件中需要打开listenners配置行,不要使用 ...
最新文章
- jquery API
- Java位运算在程序设计中的使用:位掩码(BitMask)
- JAVA并发-为现有的线程安全类添加原子方法
- python 网关配置界面代码_Linux下使用python自动修改本机网关代码分享
- Android开发三 如何安装 Android SDK 和Eclipse 插件
- Lucene学习之——停用词
- JDK 是如何判断两个对象是否相同的?判断的流程是什么?
- python布尔类型运算_9.python的布尔类型与流程控制
- android photopicker怎么修改状态栏,有没有办法阻止UIImagePickerController更改状态栏样式?...
- 递归Java_递归的Java实现
- Apache Kylin 与 ClickHouse 的对比
- c语言谭浩强ppt课件,编程_C语言学习课件_谭浩强_PPT~1216F.ppt
- 关键词组合工具_8大工具组合出击,解决扩量难题
- Git submodule使用指南(二)
- SRE实战手册-基础篇
- ffmpeg命令分析-b:v
- 惊呆了!难道还有这么云盘的软件???再也不怕视频被和谐了!!
- 学习笔记,梯度下降(非向量实现)
- 惊呆!编程就像写文档!开发神似搭积木!
- python带你采集桌游、剧本杀游戏店数据信息~
热门文章
- 140多位顶尖科学家致信 扎克伯格拒绝对特朗普脸书“宣扬暴力”言论采取行动...
- 学分,选够了吗? Alpha冲刺阶段
- 提高写作能力的15条技巧和建议
- AI软件写作实战测试:写作技巧 - 让智能写作助手变得更加智能化?
- 【Linux8系统学习】使用RAID与LVM磁盘陈列技术(一)
- “潜意识”有超潜能吗?
- 【笔记】三张图读懂机器学习:基本概念、五大流派与九种常见算法
- 为什么网络掩码一定是255.255.255.0(/24)
- 澎湖渔船捕获多尾超大野生虱目鱼 比养殖鱼大10倍
- PHP各大音乐平台API接口下载,PHP各大音乐平台API接口