Eclipse+Maven+Tomcat 集成开发环境配置

客官°小女子只卖身不卖艺 2024-03-31 15:52 217阅读 0赞

在Eclipse中创建的Dynamic Web Project 类型的Web 项目, 通过Run As -> Run on Server 可以添加本地安装的Tomcat,在Eclipse 中启动Tomcat 进行整合开发。
在这里插入图片描述

但是如果创建的是Maven类型的项目,如果没有导入额外的包还正常, 但是只要在pom.xml 中引入了其他的包,会报找不到Class的错误, 如下图:
在这里插入图片描述

如果在Eclipse 中对Maven 类型的项目可以直接整合Tomcat 运行呢?首先来看看两者的项目的结构。

项目结构比较

为了开发的结构清晰和区别度, 在 Eclipse中看到的项目的结构和实际的文件结构有一些差异, 而不同类型的项目的结构也是不同的。

Maven类型的项目结构如下:

在这里插入图片描述

其结构的特点是:

  1. 分离了Java代码和配置文件, 也就是src/main/java 和src/main/resources
  2. 注重单元测试, 有src/test 目录
  3. Web资源相关的文件在src/main/webapp 下进行添加。
Dynamic Web Project类型的结构如下

在这里插入图片描述

动态Web 项目主要分为java 代码(src)和Web内容(WebContent)。

Eclipse 项目结构揭秘

Eclipse 是如何定义项目的类型的呢? 答案就是项目里的 .project 文件来记录的, 以动态Web项目为例, 该文件的内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <projectDescription>
  3. <name>myapp</name>
  4. <comment></comment>
  5. <projects>
  6. </projects>
  7. <buildSpec>
  8. <buildCommand>
  9. <name>org.eclipse.jdt.core.javabuilder</name>
  10. <arguments>
  11. </arguments>
  12. </buildCommand>
  13. <buildCommand>
  14. <name>org.eclipse.wst.common.project.facet.core.builder</name>
  15. <arguments>
  16. </arguments>
  17. </buildCommand>
  18. <buildCommand>
  19. <name>org.eclipse.wst.validation.validationbuilder</name>
  20. <arguments>
  21. </arguments>
  22. </buildCommand>
  23. </buildSpec>
  24. <natures>
  25. <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
  26. <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
  27. <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
  28. <nature>org.eclipse.jdt.core.javanature</nature>
  29. <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
  30. </natures>
  31. </projectDescription>

而对于Maven类型的项目, .project 的内容则类似:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <projectDescription>
  3. <name>javaweb</name>
  4. <comment></comment>
  5. <projects>
  6. </projects>
  7. <buildSpec>
  8. <buildCommand>
  9. <name>org.eclipse.jdt.core.javabuilder</name>
  10. <arguments>
  11. </arguments>
  12. </buildCommand>
  13. <buildCommand>
  14. <name>org.eclipse.wst.common.project.facet.core.builder</name>
  15. <arguments>
  16. </arguments>
  17. </buildCommand>
  18. <buildCommand>
  19. <name>org.eclipse.wst.validation.validationbuilder</name>
  20. <arguments>
  21. </arguments>
  22. </buildCommand>
  23. <buildCommand>
  24. <name>org.eclipse.m2e.core.maven2Builder</name>
  25. <arguments>
  26. </arguments>
  27. </buildCommand>
  28. </buildSpec>
  29. <natures>
  30. <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
  31. <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
  32. <nature>org.eclipse.jdt.core.javanature</nature>
  33. <nature>org.eclipse.m2e.core.maven2Nature</nature>
  34. <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
  35. <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
  36. </natures>
  37. </projectDescription>

可以看到, Maven 类型的项目的nature 有org.eclipse.m2e.core.maven2Nature, 构建命令(buildCommand)则包含 org.eclipse.m2e.core.maven2Builder

在Maven项目中集成Tomcat 服务器

在Eclipse中可以直接运行动态Web项目,而不需要把Web项目打包到服务器目录中, 方式是右键单击项目,选择 Run As -> Run On Server, 如下图:

在这里插入图片描述

在弹出的对话框中, 选择对应的 Tomcat版本和本地Tomcat的路径,类似:
在这里插入图片描述

这里就遇到了开篇的问题, 如果是Maven类型的项目, 通过这种方式会找不到pom.xml 导入的第三方包,何也? 因为这是两种不同类型的项目。有解法吗? 当然有。

很简单, 右键单击项目, 选择 “Properties”, 在弹出对话框选择“Deployment Assembly”, 点击右边的 “Add”按钮, 在弹出框种选择 “Java Build Path Entries”, 将Maven Dependencies 添加进来。
整个步骤的目的就是: 将Maven的依赖项添加到动态项目的lib 目录中, 操作的界面如下:

在这里插入图片描述

在这里插入图片描述



发表评论

表情:
评论列表 (有 0 条评论,217人围观)

还没有评论,来说两句吧...

相关阅读