ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

IDEA导入Maven工程并配置Tomcat启动的完整指南

IDEA导入Maven工程并配置Tomcat启动的完整指南 做Java Web开发的朋友尤其是还在用SSM、SSH这类传统架构的团队几乎每天都要跟IDEA、Maven、Tomcat这三个东西打交道。IDEA系列我前面已经写了三篇从安装到上手基本都有涉及这一篇专门解决一个卡住很多人的环节怎么把一个Maven工程成功导入IDEA再配上Tomcat把它跑起来。很多新手甚至做了两三年的开发仍然在“双击pom.xml打开项目”这种操作上翻车或者在Tomcat配置里折腾一个下午最后控制台报了个404或者端口占用就彻底懵了。这篇文章我会把从环境准备到最终启动的完整链路拆开讲清楚包括了版本搭配、Maven的settings.xml配置、IDEA里的导入细节、Artifact的含义、热部署设置以及一堆我实际踩过的坑。适合刚接触IDEAMavenTomcat这套组合的读者也适合那些每次都要百度“idea配置tomcat怎么操作”的朋友。1. 先搞清楚角色Maven和Tomcat在Java Web开发里到底干嘛的1.1 Maven不只是一个“下载工具”很多教程上来就让你装Maven、配环境变量但你如果不理解它解决什么问题后面遇到报错还是不知道怎么查。Maven的核心作用我习惯分三块来讲。第一块是依赖管理。以前写Java Web项目我们要用某个库比如MySQL驱动、Jackson、JUnit得自己去官网下一个jar包扔到WEB-INF/lib目录里。一个项目几十个jar每个jar还依赖别的jar那种“jar地狱”我相信老开发都有印象。Maven改变了这个局面你只需要在pom.xml里声明依赖的坐标——groupId、artifactId、version它就把jar包给你拉下来传递依赖也自动处理。这个机制有点像你家冰箱你不需要自己去菜地摘菜只需要在购物清单上写下“鸡蛋、牛奶、面包”外卖平台自动给你配齐送上门。第二块是标准化项目结构。Maven规定死了一套目录规范源代码放src/main/java资源文件放src/main/resources测试代码放src/test/java。这套规范看着简单,但好处非常明显任何一个人拿到Maven项目不需要别人解释就能找到所有东西团队协作成本直线下降。第三块是构建生命周期。Maven内置了validate、compile、test、package、verify、install、deploy这一套标准流程你只需要敲命令它就把编译、测试、打包的事情干了。以前我们打包上线要写一堆ANT脚本现在Maven一条mvn clean package就完事。明白这些之后你就能理解为什么IDEA对Maven项目的支持这么深了——因为Maven不仅仅管jar包它还定义了项目的骨架和构建方式IDEA需要读取pom.xml才知道怎么组织你的代码、怎么编译项目、怎么在部署的时候找到产出物。1.2 Tomcat是“运行容器”不是普通的服务器软件Tomcat经常被叫做“服务器”但准确说它是一个Servlet容器是Servlet规范的一个具体实现。我们写的Java Web应用本质上是一堆Servlet、Filter、Listener组成的它们自己不能直接跑必须有一个容器去实例化它们、调用它们的doGet/doPost方法。Tomcat干的就是这个活儿。我经常用邮局的比喻来解释Tomcat和Web应用的关系你的Web应用就是一封装在信封里的信Tomcat是邮局只有把信交到邮局手里它才能被投递出去——也就是被用户的浏览器访问到。没有Tomcat你的Servlet类只是一个普通的Java类跟外面随便一个工具类没什么区别。Tomcat跑起来之后默认监听8080端口你在浏览器里输入http://localhost:8080/项目名/资源路径请求到达TomcatTomcat根据URL找到对应的Servlet或JSP执行完把结果返回给浏览器。这里面有个“项目名”的概念在IDEA里对应的是Artifact的Application context后面第4部分我会重点讲因为大多数404问题都是这个配置没搞对。理解这个基本概念之后你就知道为什么IDEA要单独配置一个Tomcat了——它需要一个“容器”来运行、调试你的Web项目。IDEA本身不做Servlet容器的事情它只是帮你把Tomcat管理起来、把编译好的项目塞进Tomcat里然后按一下运行按钮就完事。2. 环境准备JDK、Maven、IDEA、Tomcat的版本搭配2.1 版本搭配是全局问题的源头先说一个我最想强调的事绝大多数环境问题根子出在版本不匹配上。很多朋友去官网下载软件哪个版本最新就装哪个结果Maven版本和JDK版本不兼容Tomcat版本和Servlet标准对不上然后开始怀疑人生。我做了这么多年的Java开发吃过太多次版本不兼容的亏后来养成一个习惯先规划好版本再动手安装。这里给出一套我自己用下来比较稳的组合也标注一下当前主流项目的版本搭配方便你做选择JDK版本适合的Maven版本适合的Tomcat版本适用场景JDK 8Maven 3.6.3 / 3.8.xTomcat 8.5 / 9.0老项目维护、SSM/SSH架构公司还在用JDK8的场景JDK 11Maven 3.6.3及以上Tomcat 9.0 / 10.0企业级新项目Spring Boot 2.x时代的标配JDK 17Maven 3.8.x及以上Tomcat 10.1.xSpring Boot 3.x / 微服务架构JDK17是当前市面最主流的选择我个人目前主力开发用的是JDK 8 Maven 3.6.3 IDEA社区版 Tomcat 9.0的组合。我知道JDK 8老但不得不承认很多公司线上跑的还是JDK 8开发环境和线上保持一致能少踩很多坑。如果你是纯自学建议直接用JDK 17 Tomcat 10.1的组合一步到位。提醒一下Tomcat版本和Servlet规范是对应的Tomcat 10用到的是jakarta.servlet命名空间从javax.servlet迁移过来的你如果拿Tomcat 10跑老项目代码里import javax.servlet会直接编译报错这个坑属于一眼看不出来、查半天才发现的那种特此提前说明。2.2 Maven安装与settings.xml配置Maven的安装很简单本质就是解压之后配置环境变量。步骤如下第一步去Maven官网下载apache-maven-3.6.3-bin.zip注意下载bin版本而不是src版本src是源码包你可能用不到。第二步解压到一个没有中文、没有空格的路径比如D:\dev\apache-maven-3.6.3。这一点很重要IDEA对复杂的特殊路径兼容性偶尔会出幺蛾子路径越简单越安全。第三步配置环境变量。新增MAVEN_HOME指向Maven解压目录然后在Path变量里追加%MAVEN_HOME%\bin。后面在命令行里执行mvn -v如果能输出版本信息就说明OK了。第四步这是很多人经常漏掉的步骤配置settings.xml。这个文件在Maven目录的conf子目录下面是我认为Maven安装过程中最核心的一个文件里面有三个配置决定了你之后的体验。第一个配置是localRepository也就是本地仓库的位置。Maven把下载的jar包存在本地仓库里默认在用户目录的.m2/repository下面。我强烈建议把它改到一个独立目录比如D:\dev\maven-repository。原因有两点一是C盘空间宝贵这个仓库几年下来能涨到几个G二是以后你重装系统、换电脑把这个目录拷走所有项目的依赖都不需要重新下载。第二个配置是镜像源。Maven默认从中央仓库下载jar包网速不稳定的时候经常卡到怀疑人生还容易下载失败。国内必须走阿里云镜像配置方式是在settings.xml里的mirrors节点下加一段mirror idaliyunmaven/id mirrorOfcentral/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirror加上这段之后Maven下载依赖的速度会有一个质的提升。如果你用的是Java 8还需要注意一个细节某些高版本Maven3.9默认用的HTTPS协议在部分内网环境会有问题这个比较冷门遇到了再说当前阶段不需要过度担心。第三个配置是JDK编译版本。Maven默认用JDK 1.5的编译级别这会导致你代码里用Lambda表达式都编译不过。在profiles节点下配置一段让Maven使用你本机的JDK版本profile idjdk-8/id activation activeByDefaulttrue/activeByDefault /activation properties maven.compiler.source1.8/maven.compiler.source maven.compiler.target1.8/maven.compiler.target project.build.sourceEncodingUTF-8/project.build.sourceEncoding /properties /profile如果你用的是JDK 17把1.8改成17即可。2.3 IDEA里指定“用我自己的Maven”IDEA是自带一个捆绑Maven的但它在IDEA内部目录里你没法改它的settings.xml。所以我从来不用自带Maven而是让IDEA用我们自己解压配置好的那个。配置路径在File → Settings → Build, Execution, Deployment → Build Tools → Maven。在这个页面里有三栏需要关注Maven home path选择你自己解压的Maven目录User settings file选择你的settings.xml路径Local repository会自动读取settings.xml里配置的路径正常会显示你设置的仓库目录这个地方有个小坑修改User settings file之后Local repository这栏不会自动变你需要勾选右边的Override复选框然后把路径改成你实际的本地仓库路径。如果不改Maven还是会把jar包下载到默认的.m2目录等于前面的功夫白做了。IDEA改完Maven配置之后要点击Apply然后它会提示重新导入选择Import Changes即可。2.4 Tomcat的下载与安装Tomcat的安装比Maven还简单同样去官网下载对应版本的压缩包解压到D:\dev\apache-tomcat-9.0.xx即可。这里注意几点Tomcat解压后目录里的bin/startup.bat可以用来启动默认服务Windows下但我个人建议你不要在IDEA外面手动启动Tomcat来跑项目。原因我后面会讲到因为IDEA配置的Tomcat会往Tomcat里丢一个特定的上下文配置文件IDEA外面跑的Tomcat和IDEA管理的Tomcat容易互相干扰端口冲突就是这样产生的。另外Tomcat默认的8080端口如果被别的程序占了你会看到一种非常经典的报错Port 8080 was already in use。遇到这个报错要么结束占用端口的进程要么在IDEA里把Tomcat端口改成8081、8082之类的空闲端口。这里顺便分享一个我自己的习惯我装Tomcat的时候会在路径里带上版本号比如D:\dev\apache-tomcat-9.0.87这样以后需要验证不同版本行为的时候不用重新解压一个目录清晰明了。如果你同时维护好几个Tomcat建议也在环境变量或配置里标注清楚你用的是哪一个。3. 实操把Maven工程导入IDEA的几种方式3.1 方式一Open直接打开推荐这是最推荐、最简单的方式90%的情况我都用这个。打开IDEA在欢迎界面或者File菜单里选择Open然后找到项目所在目录。这里有一个关键细节选择的是pom.xml所在的根目录也就是项目根目录不是某个子目录更不是直接双击pom.xml在文件编辑器里打开。选中目录之后IDEA会问你是新窗口打开还是当前窗口打开按自己习惯选。之后IDEA开始识别这个项目会有一个自动导入的过程底部状态栏出现一个进度条提示“Importing Maven projects...”右上角可能出现一个Maven projects need to be imported的弹窗点Enable Auto-Import比较好后续pom.xml变更会自动导入IDEA开始下载依赖第一次会比较慢跟网络和镜像源有关你可以在IDEA右侧栏看到Maven面板右上角是一个M字母形状的标志展开它能看项目的所有模块、依赖、生命周期命令。另一个验证导入成功的标志是External Libraries里列出了所有依赖的jar包。如果这些出现了说明导入成功了一大半。3.2 方式二从远程仓库Clone下来再导入很多公司的项目托管在GitLab、GitHub或Gitee上新员工入职基本都是克隆代码然后导入。操作路径是File → New → Project from Version Control输入仓库地址IDEA就会把它clone到本地。Clone完成之后IDEA会自动识别这个项目的类型。但这里有个坑如果是一个没有带.idea目录的老项目IDEA第一次打开可能会把它识别成普通的Java项目而不是Maven项目。这时候你需要右键点击pom.xml选择Add as Maven ProjectIDEA才会把它当成Maven工程加载。这个操作为什么老被遗漏因为新人往往不知道pom.xml才是Maven项目的灵魂没有它IDEA就不知道去哪读依赖。3.3 导入后的三大关键配置项目导入之后别急着点运行先确认三个地方否则后面一定会出问题。第一确认Project SDK。路径是File → Project Structure → Project。在这个页面里Project SDK要选你的JDK版本比如1.8或17Language level要和SDK匹配。我见过很多人的SDK用的没问题但Language level还是1.5结果代码里写ListString这种泛型都报错一脸懵。这个页面里如果再往下看Project compiler output是编译产物的输出路径默认指向项目目录下的out文件夹保持默认就可以。第二确认Module的设置。在Project Structure里切到Modules标签选中当前模块右侧的Sources标签里你要确认一点src/main/java被标记为蓝色Sourcessrc/main/resources被标记为黄色Resourcessrc/test/java被标记为绿色Tests。如果标记不对编译的时候代码找不到、资源文件也加载不到就会出现那种“代码明明没问题但启动报找不到配置文件”的诡异问题。这个问题在IDEA自动识别失败时特别常见。第三确认Maven面板里的生命周期命令可用。IDEA右侧的Maven面板展开Lifecycle你会看到clean、compile、package等命令。建议先执行一次clean再执行一次compile如果都能成功说明项目的基础代码和依赖都没有问题可以进入下一步配Tomcat了。如果这里就报错了别急着往下走先把编译问题解决掉。3.4 依赖下载失败的处理这个情况太常见了几乎每个刚开始用Maven的人都会遇到我单独拿一个小节来说。现象很直观pom.xml里某些依赖的坐标显示红色波浪线External Libraries里对应的jar包没有出现或者运行的时候报ClassNotFoundException。原因大概有这么几类第一类网络问题。中央仓库本来就慢而且有时候会被间歇性抽风。解决方式是配置阿里云镜像方法前面已经讲过了。第二类本地仓库里的jar包损坏。这种情况多数是下载到一半中断导致的。Maven遇到这种情况很傻它不会自动重新下载只会一直用那个损坏的文件。解决方式很粗暴去本地仓库找到对应的目录删掉然后重新reimport。第三类坐标写错了。比如版本号打错、artifactId大小写不对或者这个依赖根本不属于当前groupId/artifactId。这种错误Maven会直接在IDE里报无法解析类的错误你去Maven中央仓库搜一下坐标复制粘贴过来就行。第四类公司内部私有依赖。很多公司有自己的私有仓库里面有一些不对外发布的内部jar包。如果你用的是个人电脑没有配置公司私服的地址那些依赖自然是拉不下来的。这种情况你得找同事要settings.xml里面通常有私服地址和账号或者要那个jar包然后用mvn install:install-file手动安装到本地仓库。处理完这些问题之后在IDEA右侧Maven面板顶部的刷新按钮点一下或者右键项目选择Reload All Maven Projects重新加载依赖红线就会消失。4. 配置Tomcat并启动完整步骤与高频坑位4.1 把本地Tomcat注册到IDEA现在Maven项目已经能正常编译了但还没有运行环境所以下一步是把Tomcat挂到IDEA里。操作路径是File → Settings → Build, Execution, Deployment → Application Servers点加号选择Tomcat Server。这里需要选择Tomcat的安装目录IDEA会自动识别版本号并填入Tomcat version。选好之后注意IDEA会弹出一个警告Warning: No artifacts marked for deployment。这句话翻译过来就是“你还没告诉我往Tomcat里塞什么东西”。看到这个不要慌正常现象后面配置Artifact那步就是解决它的。有个容易混淆的地方Settings里的Application Servers是IDEA全局的Tomcat配置而每个运行/调试配置才是真正决定启动方式的。全局配置相当于“IDEA认识这个Tomcat”运行配置才是“这次运行用这个Tomcat跑当前项目”。你可以只配置一次全局Tomcat创建多个运行配置这在后面同时跑两个项目做联调时非常有用。4.2 什么是Artifactwar和war exploded的区别有多大这一步是IDEA配置Tomcat的核心中的核心也是新手最容易一头雾水的地方。Artifact在IDEA里的意思是“项目的产物/构建结果”。对于Web项目来说Artifact就是把你的代码、资源、依赖打包之后交给Tomcat去运行的载体。如果有两个Artifact选项一个叫项目名:war一个叫项目名:war exploded你就需要了解它们的区别对比项war包war exploded产物形式一个压缩包一个展开的目录结构部署方式需要把war包发布到Tomcat的webapps目录直接把目录关联为Web应用开发调试每次改动需要重新打包配合热部署改完代码刷新页面就能看到效果推荐场景上线部署日常开发调试开发阶段我向来只推荐war exploded。原因很简单你用war包模式每次改一行代码都要重新构建一次再部署等个十几秒都是少的用exploded模式配合IDEA的热部署机制改了代码按一下CtrlF10或者触发自动更新马上就能看到效果开发体验完全不在一个量级。创建Artifact的方式在Project Structure → Artifacts页面点加号选择Web Application: Exploded然后从Available Elements里把项目的compile output和依赖添加到左边。IDEA对Maven项目一般会自动识别并默认创建好一个Artifact你只需要确认它的内容完整即可。重点检查一下WEB-INF下面有没有把编译后的classes和lib目录都加进去如果没有启动的时候会报ClassNotFoundException。4.3 创建Run/Debug Configuration并启动前面所有准备都做好了现在来创建真正能跑的配置。在IDEA右上角的运行配置下拉框里选择Edit Configurations点加号选择Tomcat Server → Local。这个名字容易误导这里说的是“在本地运行Tomcat”不是“本地服务器”的意思。Configuration界面里要做的事情分两步。第一步在Server标签页确认Application Server指向你刚才配置好的Tomcat。HTTP port默认是8080注意右下角有个JMX port它用于IDEA和Tomcat通信也要保持不冲突一般IDEA会自动分配一个。如果项目里配置了web.xml或者SpringMVC等框架还需要把VM options参数设置一下最常见的是设置编码和内存-Dfile.encodingUTF-8 -Xms256m -Xmx512m第二步在Deployment标签页点击加号选择Artifact把之前创建好的war exploded类型Artifact加进来。添加完成之后下面出现一个Application context的输入框这个就是访问项目的根路径。默认是/项目名你可以改成/表示直接通过http://localhost:8080访问也可以保持默认。这里我解释一下为什么Application context这么容易出问题。Tomcat启动之后它把每个Web应用映射到一个URL路径上Application context就是这个路径名。你配置成了/demo那么访问的URL就是http://localhost:8080/demo/login.jsp这样的。如果你不知道这个规则项目启动成功后浏览器访问http://localhost:8080Tomcat返回的是首页或者404但你的应用其实已经跑起来了只是你没带对路径而已。新手经常在这个地方慌了神其实只要加上项目名路径就一切正常了。配置完成后点右上角的运行按钮你会看到IDEA底部弹出控制台输出Tomcat的启动日志。看到这样几行关键日志就说明启动成功了INFO: Server startup in [xxx] milliseconds然后IDEA会自动打开浏览器并跳转到设置的Application context路径。如果没自动跳转手动在浏览器输入http://localhost:8080/项目名即可。如果你在IDEA里改了Tomcat的端口比如改成8081那访问地址就要相应地改成http://localhost:8081/项目名。这点很容易被忽略。4.4 热部署设置开发效率的关键热部署是一个非常有用的能力它让你修改代码之后不用重启Tomcat就能生效。在Tomcat Server的Run/Debug配置里切换到Server标签页下面有On Update action和On frame deactivation两个下拉框。On Update action表示在你手动触发更新操作比如IDEA右上角的Update按钮或者CtrlF10时做什么通常选Update classes and resources这样就只是替换变化的部分速度快。On frame deactivation表示在IDEA窗口失去焦点时做什么我习惯选Update classes and resources。这样我改完代码切到浏览器IDEA会自动更新再回到浏览器刷新页面就能看到效果整个开发节奏非常流畅。不过要说明一下热部署的边界如果你修改的是方法签名、新增删除类这种结构性变化热部署可能失败有时候必须重启。但像修改JSP、HTML、JS、CSS、图片资源、方法体内部逻辑这些热部署基本都能搞定。我在实际开发中绝大多数修改都能靠热部署直接生效。4.5 常见问题速查表把我在实际辅导中遇到最多的几个问题整理成一张表方便你排查时对照现象根因解决方式浏览器访问出现404Application context配错或没加项目名路径确认访问URL带上配置的context路径检查Deployment里有没有添加Artifact启动报错Port 8080 was already in use8080端口被其他程序占用关掉占用程序或者把HTTP port改成8081等空闲端口启动报错Unable to open debugger portJMX端口被占用在Server配置里换一个多余的JMX端口控制台中文乱码编码不统一在VM options里加-Dfile.encodingUTF-8同时把IDEA的File Encoding改成UTF-8pom.xml有红色波浪线依赖下载失败或坐标错误检查镜像源配置、本地仓库是否有损坏文件、坐标是否拼写错误然后Reload All Maven Projects启动成功但页面显示HTTP 500代码或配置存在问题看IDEA控制台的异常堆栈重点是Caused by那一段大多数是空指针、配置找不到或依赖冲突修改代码后不生效热部署没配好或者没触发更新检查On Update action配置手动CtrlF10触发更新必要时重启JSP报错说找不到类编译输出没有包含依赖检查Artifact的lib目录是否添加了所有依赖清理后重新构建这里面我要特别说一下HTTP 500的处理思路。很多新手一看到堆栈就蒙了满屏的报错不知道从哪看起。我的经验是直接拉到底部找Caused by那一行那里才是真正导致异常的根源。比如Caused by: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener说明Spring的jar包没打进去去检查Artifact再比如Caused by: java.lang.NullPointerException那就是代码逻辑问题了去断点调试。端口占用的问题我也多说一句。它特别阴险的地方在于很多时候你的Tomcat已经启动过一次然后你点了停止按钮但进程没有完全退出。Windows下可以用netstat -ano | findstr 8080找到占用端口的进程PID然后在任务管理器里把它结束掉。当然最稳妥的方式是把IDEA里历史运行实例全部停掉再重新启动。4.6 启动成功的标志与性能调优建议当你看到控制台出现Server startup in xxx milliseconds且浏览器能正常打开页面恭喜整条链路已经通了。这个时刻值得庆祝一下因为从零到能跑起一个Maven Web项目你已经掌握了Java Web开发最核心的开发环境搭建能力。最后分享两个实践经验。第一个是调整Tomcat的启动内存。如果你的项目比较大加载了大量依赖默认的Tomcat内存设置可能会导致启动缓慢甚至内存溢出。在Run/Debug配置的VM options里加参数一般开发环境-Xms256m -Xmx512m就够用了如果项目特别重加到-Xmx1024m也不要紧。但别调太大本机内存还要留给IDEA和浏览器。第二个是注意项目里web.xml或配置类里的encoding设置。我在很多老项目里见过配置文件的编码是GBK而IDEA默认是UTF-8这种情况会导致页面显示乱码或者properties文件加载出来是乱码。统一把IDEA的File Encodings三个选项Global Encoding、Project Encoding、Default encoding for properties files都设置成UTF-8再检查一下项目的配置文件有没有历史遗留的编码问题基本能避免大半乱码的坑。5. 多模块项目的导入与配置要点之前讲的都是最典型的单模块Maven项目但在实际企业开发里你拿到的项目很有可能是多模块的也就是一个父pom下面挂了好几个子模块比如common、dao、service、web这种结构。多模块项目的导入和配置跟单模块有一些区别我补充说一下。首先导入方式跟单模块一样打开父pom所在目录。IDEA识别到父pom之后会自动把所有的子模块识别为Maven模块在Maven面板里你能看到它们以层级结构排列。其次Artifact的配置有讲究。一个多模块项目最终部署到Tomcat的通常只是其中某一两个web模块打包方式是war的模块其他纯逻辑模块common、dao、service这些都是jar包类型的。你在创建Artifact的时候要选web模块的war exploded并且在Artifact的Available Elements里把其他模块的输出也添加进去。具体操作是在Available Elements里找到对应模块的compile output右键选择Put into /WEB-INF/classes然后检查lib目录里是否包含所有需要的依赖。如果漏了某个模块的输出启动的时候会报NoClassDefFoundError而且是那种在IDEA里编译都正常、一运行就崩的情况比较隐蔽。多模块还有一个顺序问题如果你改了common模块的代码一定要先把common模块install到本地仓库web模块才能引用到最新的编译结果。这在IDEA里的表现是你改了common的代码但web模块运行时用的还是老版本。解决方式是在Maven面板里对common模块执行install如果有必要对整个项目执行clean install让所有模块都重新构建一遍。我见过很多人不会用IDEA的Run Anything功能其实它是个很好用的工具。双击Ctrl键弹出输入框你可以直接输入mvn install -pl xxx -am这样的Maven命令组合。-pl指定模块-am表示同时构建它依赖的模块配合多模块开发非常顺手。这里不展开讲但建议你去了解一下能省很多鼠标操作。6. 从IDEA到命令行Maven命令的熟练运用我接触过不少朋友习惯完全依赖IDEA的图形界面操作Maven一旦离开IDE就不知道怎么构建项目了。这里我建议你在命令行里也跑一遍那几条核心命令因为它是很多运维脚本、CI/CD流程的基础也是你自己排查问题的有效手段。在项目根目录打开命令行执行这些命令时你其实就在手动做IDEA帮你做的事情# 清理编译出的class文件 mvn clean # 编译主代码 mvn compile # 执行单元测试 mvn test # 打包生成war或jar mvn package # 把打包产物安装到本地仓库供其他模块或项目引用 mvn install这些命令可以串起来用比如mvn clean install -DskipTests就是清理、编译、打包、安装一步到位并且跳过测试。我平时在本机构建项目时最常用的命令就是这一条。-DskipTests是跳过测试代码的编译和运行-Dmaven.test.skiptrue则连测试代码的编译都跳过两者的区别有兴趣可以自己试试。命令行构建过程中如果出现BUILD FAILURE会有一大段报错。很多新手看到红字就慌了其实关键是看[ERROR]行后面跟着的Failed to execute goal这一段它会明确告诉你哪一步失败了是代码编译错误、依赖下载失败还是测试用例没有通过。把这些信息拿去问搜索引擎或者同事效率会高很多。有些公司还用Maven配合maven-shade-plugin或maven-assembly-plugin来打可执行jar包或者用maven-surefire-plugin来管理测试报告这些都是后话了。当前阶段把clean、compile、test、package、install这五条命令用熟就足够应付绝大多数日常工作了。7. 写在最后的个人体会这套IDEA导入Maven工程并配置Tomcat启动的流程我自己走了无数遍也带很多新人跑通过。总的感受是知识本身并不难难的是把概念串联起来、把细节抠到位。很多人卡住不是因为操作步骤多而是因为报错之后不知道去哪查原因。我的建议是不要怕报错每一个报错都是系统在精确地告诉你哪里有问题。你要做的是把报错信息完整地读一遍把关键字拿去搜索然后动手解决。这个过程重复得多了你对整个技术栈的理解就会越来越深。最后再分享两个我养成的习惯。一个是每到一个新环境先把版本信息核对一遍JDK、Maven、Tomcat、IDEA这四样东西的版本和谐了后面才不容易出幺蛾子。另一个是在IDEA里配好Maven和Tomcat之后用默认设置跑通一个最简单的Hello World再做正式开发。这相当于给自己确认了一下基础环境是可靠的后面开发中出问题也更容易定位。希望这篇文章能帮到你如果你在配置过程中遇到了什么本文没提到的怪问题欢迎留言交流我看到会尽力回复。
返回列表