IntelliJ IDEA 中搭建 Eclipse Java Web 项目环境:从 .project 导入到 Tomcat 运行部署全流程
文档教程【免费下载链接】IntelliJ-IDEA-TutorialIntelliJ IDEA 简体中文专题教程项目地址https://gitcode.com/gh_mirrors/in/IntelliJ-IDEA-Tutorial点击查看免费下载本篇文章是 IntelliJ IDEA 简体中文专题教程中关于 Eclipse Java Web 项目迁移的实战指南完整覆盖从 Eclipse 项目以开源论坛项目 JspRun 为例直接打开、目录标注、依赖包管理、Facets/Artifacts 配置到 Tomcat 启动、热更新、停止与 war 包输出的全流程。读完本文你可以不借助任何导入向导直接在 IntelliJ IDEA 中打开并运行一个传统的 Eclipse Java Web 项目并理解Sources、Excluded、Facts、Artifacts、On Update action等 IntelliJ IDEA 特有概念的底层含义。Eclipse 用户迁移前的概念准备Workspace / Project / Module 对照很多从 Eclipse 迁移过来的开发者第一反应是在同一个窗口里管理多个项目。但 IntelliJ IDEA 没有 Eclipse 工作空间Workspace的概念它的组织模型是一个 Project 打开一个 Window 窗口Project 是最高层级其次才是 Module。Eclipse 的workspace类似 IntelliJ IDEA 的Project但不应照搬理解Eclipse 的project对应 IntelliJ IDEA 的ModuleEclipse 的.project文件对应 IntelliJ IDEA 的.iml模块配置文件IntelliJ IDEA 的项目级配置保存在.idea目录中项目与模块的配置变动都以 XML 文件方式体现详见仓库中的项目相关概念与 Hello World 项目创建与项目配置文件介绍。正因为 Module 是可独立编译、运行、测试和调试的最小功能单元传统的单 Module Eclipse 项目在 IntelliJ IDEA 中通常只对应一个 Module这也决定了本文后面所有配置都在单 Module前提下展开。认识典型 Eclipse Java Web 项目结构以 JspRun 为例在 Eclipse 下中小型 Java Web 项目的目录结构基本都是固定的模式顶层有src源码目录输出根目录为WebRoot或webapp其下有WEB-INF目录WEB-INF内部通常包含classes编译输出和lib依赖包两个关键子目录。本文以一个开源论坛项目 JspRun 作为演示对象其典型结构如下从上图可以看出几个关键角色src可编译的源代码目录WebRoot整个项目的 Web 输出根目录是容器Tomcat部署时访问的根WEB-INF存放web.xml等核心配置文件WEB-INF/classes编译后的 class 文件输出目录WEB-INF/lib项目依赖的 jar 包目录。后续所有配置步骤都是围绕让 IntelliJ IDEA 正确识别以上这些角色的职责来展开的。直接打开 Eclipse 项目选择 .project 文件IntelliJ IDEA 对 Eclipse 项目支持非常友好——支持直接打开 Eclipse 项目无需任何导入操作。做法是在 IntelliJ IDEA 中通过打开文件的方式直接选中 Eclipse 项目根目录下的.project文件即可完成项目打开。打开后 IntelliJ IDEA 会自动识别项目结构从源码结构看它完成了三类关键识别src目录自动识别为可编译源码目录文件夹图标会变成蓝色Source root 标识见下图标注 1WebRoot被识别为项目输出根目录Web 资源区域标注 2虽重要但无需手工配置WEB-INF下的配置文件、classes与lib目录被识别其中classes目录默认被标为红色Excluded排除目录因为编译产物对开发无意义IntelliJ IDEA 不会为它建立索引但这不影响容器运行时使用这些编译产物。由于这是单 Module 项目接下来需要把Project compiler output项目编译输出目录指定到项目WEB-INF下的classes编译目录保证编译产物落到容器可加载的位置。目录标注五大类型Sources / Tests / Resources / Test Resources / Excluded打开项目后可以根据项目实际情况对任意目录进行五种类型的标注。操作方式是选中要标注的目录再点击右侧对应类型的标注按钮。这个知识点非常重要是后续手动管理项目结构的基础。五种类型的具体含义如下标注类型用途说明Sources标注可编译的源码目录类似src。只有 Sources 类型的目录才能新建 Java 类和包这一点务必牢记。有时项目除了src还有其他目录需要可编译也要标注为 SourcesTests标注可编译的单元测试目录。在规范的 Maven 项目中顶层src不会标为 Sources而是将src/main/java标为 Sources、src/test/java标为 TestsResources标注资源文件目录。Maven 项目中的src/main/resources会标为此类型资源目录下的文件会被编译/复制到输出目录Test Resources标注单元测试的资源文件目录。对应 Maven 中的src/test/resources同样会输出到编译目录Excluded标注排除目录。被排除的目录不会被 IntelliJ IDEA 创建索引相当于被废弃其中的代码不具备代码检查和智能提示等常规功能从这些类型的划分可以明显看出 IntelliJ IDEA 对 Maven 标准目录结构的深度支持——Tests、Resources、Test Resources三种类型基本就是为 Maven 规范结构量身设计的。对于非 Maven 的传统项目一般只要设置好src一个目录即可其余按需调整。操作上的两个细节也值得注意被标注的目录会在设置界面右侧有一个总览概括列表方便一眼看清整个 Module 的目录角色划分上图中的classes目录虽然是Excluded但由于它特殊且不可编辑不会出现在右侧总览中如果想取消某个目录的标注含义点击标注按钮旁边的打叉删除按钮即可移除标注。依赖包Libraries管理五种操作与目录级引入在项目设置中可以看到项目当前所有的依赖包列表其中红色显示的依赖包表示 IntelliJ IDEA 无法识别例如路径失效或格式不识别。依赖包支持五种操作加号引入新的依赖包减号移除对应的依赖包向上箭头依赖包上移。列表越靠上的依赖包在项目加载时越优先对于同一依赖包的不同版本依赖顺序不同最终生效结果也可能大不相同向下箭头依赖包下移原因同上笔编辑依赖包的名称和路径。引入依赖包时IntelliJ IDEA 支持三种来源单个jar包、一个目录、以及已经导入到项目Libraries中的依赖包多 Module 项目还可以依赖其他 Module。这里有一个非常实用的技巧以目录为单位引入依赖而不是逐个 jar 引入。除非各个依赖包之间存在严格的依赖顺序关系否则不建议逐个引入繁琐且难以维护。推荐做法分两步先把项目中散落的零散依赖包全部移除把项目的lib目录作为一个整体依赖包先放置到项目级Libraries中Gif 演示见 images/xxi-b-eclipse-project-settings-8.gif这样做的最大好处是以后项目需要新增 jar 时只要把 jar 放进lib目录就会被自动引入因为这里引用的是目录而不是一个个具体的 jar 包无需每次手工添加。Facets管理框架配置文件的核心区对于传统 Java Web 项目还需要指定web.xml的位置这一步通常在FactsFacets中进行配置。Facts可以理解为 IntelliJ IDEA 的项目框架区专门用于管理项目使用的框架及其配置文件这是 IntelliJ IDEA 特有的配置点。除了web.xml必须配置外其他框架即使不在这里配置也不会影响项目运行但会失去 IDE 的辅助功能。例如项目中一般都有 Spring 框架Spring 有大量配置文件如果在这里正确配置了 Spring FacetIntelliJ IDEA 编辑区底部会多出几个 Spring 项目的专属设置区——因为你明确告知了 IDE 项目使用了 SpringIDE 就会提供对应的配置与导航能力。Hibernate 等其他框架同理。Artifacts配置 war 展开输出结构Artifacts同样是 IntelliJ IDEA 特有的概念可以理解为配置项目最终输出结果的地方。Java Web 项目一般必备一个配置把项目配置成 war 包展开exploded的方式输出这样容器才能直接运行该项目。关于 Artifacts 配置的几个要点Artifacts 的输出结构由前面 Module 等几项配置共同决定如果 Module 配置没有大问题这里可以省去不少步骤有些时候仍需手工调整例如本演示项目中默认生成的输出目录是错的需要改为项目中的webRoot目录该 Artifacts 配置在后续配置 Tomcat 的 Deployment 时会被引用务必重点留意。Tomcat 应用服务器配置容器、VM 参数与更新事件引入并选择容器IntelliJ IDEA 支持目前市场上主流的应用容器Tomcat、Jetty 等基本一个 IDE 就能满足常见项目开发。但要注意IntelliJ IDEA 支持这些容器不等于自带这些容器的文件容器本身仍需要你自行准备。本文演示中原本只引入了 Tomcat 7为了演示又引入了 Tomcat 6——引入时只需指定容器存放目录IntelliJ IDEA 会自动识别。核心配置项逐项拆解在 Tomcat 运行配置面板中对应 images/xxi-c-eclipse-project-tomcat-settings-3.jpg以下几个配置项是重点切换容器标注 1可以随时为项目切换不同的应用容器例如在 Tomcat 6 与 Tomcat 7 之间切换VM 参数标注 2可以为运行中的容器指定 JVM 参数例如内存大小、JRebel 的-agentpath等更新事件标注 3这是 IntelliJ IDEA 特有的重点功能包含两个事件On Update action按 Ctrl F10 更新时触发当按下Ctrl F10更新容器时按此处配置的事件执行更新。最常用的是Update classes and resources即把最新编译的类和资源文件更新到容器中。在 Debug 模式下这个动作就是所谓的HotSwap热交换只是这种热部署体验不如 JRebel 插件详见仓库中的 JRebel 热部署插件安装与使用On frame deactivation切换到其他应用时触发当从 IntelliJ IDEA 切换到浏览器时触发指定事件。这是因为 Web 开发需要频繁在 IDE 与浏览器之间切换测试该功能帮你在切换时自动做更新但切换过于频繁时非常耗资源所以推荐设置为Do nothing切换时什么都不做HTTP 端口标注 4默认 Tomcat HTTP 端口是 8080需要改端口时在这里设置启动前操作标注 5配置容器运行前要执行的动作包括Make和Build Artifacts。其中Build Artifacts是在 Deployment 选项卡中添加了 Artifact 之后自动出现的。关于Make只编译修改过文件的增量编译机制可参考仓库中的 IntelliJ IDEA 编译方式介绍。项目运行准备数据库与配置文件通过上面的配置IntelliJ IDEA 环境层面的配置已基本完成接下来配置项目相关部分。首先打开 MySQL执行以下 SQL 脚本创建一个新的数据库和用户CREATE DATABASE jsprun CHARACTER SET utf8; CREATE USER jsprunlocalhost IDENTIFIED BY jsprun; GRANT ALL PRIVILEGES ON jsprun.* TO jsprunlocalhost; FLUSH PRIVILEGES;然后切换到新建的jsprun数据库执行项目自带的数据初始化脚本文件位置为JspRun\WebRoot\install\jsprun_zh_CN.sql。最后修改JspRun\WebRoot\config.properties文件中的数据库连接属性为dbuser jsprun dbpw jsprun引入 Tomcat 依赖包并启动项目首次运行前项目还缺少 Tomcat 的依赖包如servlet-api.jar、jsp-api.jar等需要先在 Module 依赖中把 Tomcat 库引入进来否则运行时会报错演示见 images/xxi-d-eclipse-project-tomcat-run-1.gif。引入之后即可启动项目最终运行效果如下停止 Tomcat 的正确姿势Tomcat 的停止按钮需要点击两次第一次点击后出现一个骷髅头图标此时并未真正停止需要再点击一次才能完成停止。即使点了两次Tomcat 容器有时也不一定能完全停掉这时非常容易出现端口被占用的问题。解决方法是打开系统的资源管理器手动结束系统上所有 java 相关进程例如kill掉残留的 Java 进程释放被占用的端口后重新启动。输出 war 压缩包除了在Artifacts中配置之外还需要在 Tomcat 容器的 Deployment 中也跟着配置这样在启动容器时才会输出一个 war 压缩包演示见 images/xxi-e-eclipse-project-output-war-1.gif。通过这一配置过程也能理解 war 包的本质war 压缩包本质上是根据展开的 war 输出包exploded压缩而来。所以只要 Artifacts 的展开结构配置正确war 包内容就会与其一致无需手工维护两份。小结把 Eclipse Java Web 项目迁移到 IntelliJ IDEA核心路径可以概括为五步直接打开.project文件 → 确认目录标注与编译输出目录 → 以目录方式引入lib依赖 → 配置 Facets 与 Artifacts → 配置 Tomcat 并运行。其中最容易忽略的两个点分别是classes等Excluded目录不影响容器使用、以及依赖包顺序会影响同版本冲突时的生效结果。掌握这五步之后无论是传统的 Eclipse Web 项目还是后续过渡到 Maven 结构项目可参考仓库中的 Maven 结构项目搭建 与 Maven 单模块/多模块 Spring MVC Spring Mybatis 项目讲解都能在 IntelliJ IDEA 中顺畅运行。赞分享文档教程【免费下载链接】IntelliJ-IDEA-TutorialIntelliJ IDEA 简体中文专题教程项目地址https://gitcode.com/gh_mirrors/in/IntelliJ-IDEA-Tutorial点击查看免费下载相关推荐Tomcat安装部署完全指南从零开始搭建Java Web环境Tomcat安装部署完全指南从零开始搭建Java Web环境 本文详细介绍了Apache Tomcat的完整安装部署流程从环境准备、JDK配置要求开始逐步后端Web框架认证鉴权使用 IntelliJ IDEA 搭建并运行 MXNet Java 示例项目Maven 全流程指南使用 IntelliJ IDEA 搭建并运行 MXNet Java 示例项目Maven 全流程指南 本篇技术指南以 MXNet 官方 Java 教程为骨架深度学习机器学习人工智能livox_ros_driver2命令行操作速查最常用的5条命令与适用场景livox_ros_driver2命令行操作速查最常用的5条命令与适用场景 livox_ros_driver2 是 Livox 雷达HAP、Mid 360、文档教程上一篇Obsidian-skills 测试指南5 步搭建完整验证体系下一篇如何快速开发PDFMathTranslate批量翻译APIPython接口与HTTP服务设计完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →