前言:之前看书的时候一直没搞懂STS下web项目的结构是啥样的,有main,resources,甚至在src下还有个src目录,就很奇怪,正好导师给了个基于SSM框架的比较初级的web小项目让我改改,拿到之后就顺便研究了一下这个目录结构。
第一章 项目的总体概况
目录结构大概如下图。
项目的所在位置为D:\frameio\code\trunck下名为frameio
第二章 STS中的web开发目录与对应的工作空间下的开发目录
1. src/main/java下的装的是项目的源代码,包括web层service层以及dao层的代码。
在STS的工作空间中的开发目录,与web开发目录吻合。
2. src/main/resources下装的是项目的配置文件
在STS的工作空间中的开发目录,与web开发目录吻合。
3. src/test/java下装的应该是一些测试文件,这里我们并没有写,只有个系统自动生成的。
在STS的工作空间中的开发目录,与web开发目录吻合。
4.我们暂时跳过code目录,先看doc目录
doc文档下装的是一些关于数据的东西,这个应该是类似于帮助文档,自己的配的。
在STS的工作空间中的开发目录,与web开发目录吻合。
5.接下来还有一个src目录,打开发现这个目录下装的是一些前端页面之类的东西。
在STS的工作空间中的开发目录,与web开发目录吻合。
5.target目录
直接一看,这个目录下好像装着一些奇怪的东西,我们看一下工作空间中的目录。
在STS的工作空间中的开发目录,与web开发目录吻合。
但是工作空间的目录中还装着两个web开发目录中没显示的东西。
可以看到项目中还多了两个classes,点进去发现是各个文件的class(字节码)文件。
其中src/test/java下的类文件会编译在test-classes中,如下图。 观察发现,这个编译的目录结构与源目录有所不同,没有src/test/java这个文件结构,而是直接编译src/test/java下的文件,目录结构也是从其下的包处开始的。
其中src/main/java,src/main/resources下的文件都会编译进去,包括xml与properties文件,也是失去了之前的三层目录比如src/main/java,src/main/resources,直接其下的目录开始编译,具体看如下对比。
src/main/webapp,这些前端的脚本、CSS等资源什么的并没有编译进去,可能与js、css不需要编译有关系,但是我记着jsp好像要编译,这个留得继续查找答案。
6 code文件与target下的m2e-wtp文件
这个还没弄清楚,项目紧急,先留着,因为并不影响开发,不过推测一下,code文件可能和svn有关系,莫名其妙跑出来的,之前乱配了一通svn,这个东西好像貌似就有了,有点忘了,至于target下的m2e-wtp文件,可能跟项目在服务器上发布后,web项目文件下的META-INF有关系,具体可见下图。
第三章 项目在tomcat上发布后的目录
1. 项目通过tomcat发布后,在webapps下的目录结构,可以和上文中提到的src/main/webapp目录做对比。
可以看到,STS把src/main/webapp下的东西直接照搬进了D:\apache-tomcat-8.0.53\webapps\frame中。
2. 打开WEB-INF,发现多了一个classes文件,对比发现,STS把target/classes下的编译文件照搬进了D:\apache-tomcat-8.0.53\webapps\frame\WEB-INF中。
3. 继续观察D:\apache-tomcat-8.0.53\webapps\frame下的文件,发现其下的META-INF文件与之前target/m2e-wtp/webresources下的META-INF一样,大胆推测一下,应该也是从target中把这个搬进来了。
第四章 总结
STS下web项目的目录与STS的工作空间里web项目的目录基本一致,编译的文件会放到target/classes中,并不会在在STS中进行显示,编译的文件的目录就是按包目录来的,没有src/main/*那些STS给你添加的东西。
有两个src,第二个src主要是存储前端的一些东西。当把web项目发布到tomcat上时,会把第二个src下的webapp里的东西如WEB-INF复制到tomcat的webapps下项目对应的目录中,并把target目录下存储编译文件的classes文件复制到WEB-INF中,至于tomcat的项目发布目录中的META-INF,应该是target/m2e-wtp/webresources下的那个WEB-INF。