共计 1173 个字符,预计需要花费 3 分钟才能阅读完成。
在建立 Java Web 工程的时候发现 IDEA 中的 Web 工程结构似乎和 Eclipse 的 Web 工程结构不大一致, 所以就想搞清楚 Web 工程结构是怎样的.
从 Eclipse 的非 Maven 工程开始
我的第一个 Java IDE 还是 Eclipse, 用它建立 Web 工程, 只需要新建 Dynamic Web Project 即可
通常在 Eclipse 中配置完还要修改一下部署路径
这个 Deploy Path 即为部署路径, 是什么意思呢? 就是 Eclipse 会把你的项目输出到 Deploy Path 中
那输出到 Tomcat 中文件结构和我们在 Eclipse 中看到的结构是否一致呢?
显然并不是一致的, 我主要关心的有三点:
1. java 代码编译成的字节码去哪了?
2. 我引入的 jar 包去哪里了?
3. META-INF 是干啥用的?
META-INF: 相当于一个信息包, 目录中的文件和目录获得 Java 2 平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务 manifest.mf 文件, 在用 jar 打包时自动生成。
java 代码生成的字节码在 WEB-INF 中的 Classes 文件下, 我们引入的 jar 包在 WEB-INF 的 lib 文件下。
所以你的项目要是报 ClassNotFoundException 时, 你就先去 lib 文件下找找看, 看有没有这个 jar 包。
Eclipse 的 Maven 工程
在新建 Maven 工程的时候我发现了这个,archetypes 意味: 典型、原型。那 archetype 是究竟是什么意思了? 对此, 我打开了 Maven 官网,
In short, Archetype is a Maven project templating toolkit
简而言之,archetype 是一个 maven 项目模板工具包
其实官网还有一堆的解释, 不过我都看的云里雾里的, 在我看来原型就是一个目录结构模板, 当你选择一个 archetype 的时候就是选择了一种项目结构, 同样也包括你编译输出之后的结构, 供 Tomcat 识别的结构。
选择这个模板, 生成的目录结构如下:
但是选择怎样的模板, 最后供 Tomcat 识别的还是如下:
那我不选模板, 还想建 Web 工程可不可以呢?
当然是可以的:
右键选择 Java EE Tools 在选择 Generate Deployment Descriptor stub 就自动产生了.(实在截不出来图)
IDEA 的非 Maven 工程
选择模板
我原本以为目录结构是和 Java EE 的版本是有关系的, 但是当我选择 Java EE6 的时候, 目录结构和 Java EE8 一样的, 但是最后供 TomCat 识别的目录都是一致的。
不选择模板
IDEA 的 Maven 工程
我是不大喜欢 IDEA 新建 Web 工程的 Maven archetype, 之前建 Web 工程我都是自己建, 不过你选了模板也没多大关系, 你只需要在 Project Structure 中看一下编译后的文件都输出到哪里就可以了。
选择模板
不选择模板