公司的WEB项目结构一直比较随意,没有统一的规范,新增项目也是直接用旧的项目文件夹拷贝过去修改,时间长了以后项目文件结构混乱,研究了半天终于找到了(可能)正确的目录结构设置,能够直接输出正确结构的Artifacts可直接部署。
I.开发工具
IDEA
II.项目结构
【更新】maven推荐目录结构:
|-->pom.xml ---->pom文件
|-->src ---->源码包:
|-->main ---->源码:
|-->java ---->java源码
|-->resources ---->配置文件
|-->webapp ---->app应用文件
|-->WEB-INF
|-->web.xml
|-->index.jsp
|-->test ---->测试源码:
|-->java ---->java测试源码
|-->resources ---->测试配置文件
我的目录结构,就这样吧懒得改了。。
项目文件夹
├─lib
├─src
│ └─main
│ ├─java
│ └─resources
└─web
└─WEB-INF
web.xml
III.设置文件夹的类型
打开IDEA顶部菜单栏 - File - Project Structure
设置Project
Project compiler output: 标识的是整个项目的生产环境资源输出目录,正确设置以后会包括编译后的class文件、lib文件、前端文件等。
输出目录文件夹名字随意:项目文件夹\target\
。
设置Modules
-
Sources
src目录为Sources,sources目录为Resources(如果有)
-
Paths
Compiler output选择lnherit project compile output path(通常是默认选中)
设置Libraries
选择“+” - Java - 选择lib文件夹即可
设置Facets
src\main\web\WEB-INF\web.xml
如果不存在,需要手动创建。
选择“+” - Web - 双击选择当前项目
Deployment Descriptors选择src\main\web\WEB-INF\web.xml
文件
Web Resource Directories选择src\main\web
目录
项目中的前端文件:HTML、CSS、JS、JSP等放在WEB目录下即可。
设置Artifacts
根据各自项目部署方式自行选择
选择“+” - Web Application: Exploded - From Modules… - 选择当前项目即可。
Name: 指定打包输出目录的名称。
Type: 指定打包方式,我们公司使用的是Web Application: Exploded。
Output directory: 会自动指向到target\artifacts
下,可以自行设置项目打包输出目录。
IV.打包发布
把java文件、前端文件都准备好了以后,选择IDEA顶部工具栏 - Build - Build Artifacts…,指定的输出目录下会生成项目文件,包含前端文件、包含lib和class类文件的WEB-INF。
直接用这个 _war_exploded 文件夹部署到服务器上即可。
遇到的坑
lib包在WEB-INF下,一次部署项目时有个jar包识别不到,部署失败,把lib文件夹拷贝一份放到WEB-INF上一级目录,就是项目根目录下才解决了问题部署成功。