IDEA中Maven项目修改JSP后通过配置Tomcat实现立即生效

参考:

IntelliJ IDEA 的 Project Structure 窗口中的 Artifacts 勾选 Include in project build
IDEA中Facets和Artifacts配置说明
idea中artifacts、facets、modules
IntelliJ IDEA 部署 Web 项目,终于搞懂了

传统SpringMvc项目目录和对应tomcat配置如下:

在日常开发过程中,我们修改完java代码后,接着就点击 Build 编译,然后就可以去验证代码了(前提是 On 'Update' Action 选择了 Update classes and resources)

但是修改JSP的时候遇到一个问题:每次修改完JSP文件后,都必须重启tomcat才能使应用的页面生效。仅仅点击Build(Build Project)是不能使JSP页面生效的。

原因是 Build 不是 'Update' Action,无法触发 Update classes and resoures 。

方法1:可以Ctrl + F10 或者点击 Update Tomcat Application 实现触发,这时会有弹框提示。

方法2:如果要使JSP页面或者说是 webapp 目录下的修改生效,就需要点击 Build 下的 Build Artifact。其实这步操作就是 Tomcat配置 Before launch 中的 Build 'favor-bill:war exploded' artifact,即重新构建war包,将classes和resources、webapp目录复制到 target 目录中。

方法3:另外还有一种方法将 Build Artifact 和 Build 合二为一。即在 Project Setting 的 Artifacts 勾选 Include in project build,意为在 Build 的时候构建artifact。

注:IDEA中web应用的配置都在 Project Structure。

还有一个问题,百思不得其解。当启动tomcat后,在 target 和 target/favor-bill-1.0-SNAPSHOT/WEB-INF 下各有1个classes文件夹。而当点击Build后,只会将修改的java文件重新编译到 target/classes 文件夹下,WEB-INF/classes里的class文件没变。这个时候修改的代码在web应用里竟然生效了。
那么IDEA中启动tomcat应用时,生效的是 target/classes 还是 target/favor-bill-1.0-SNAPSHOT/WEB-INF/classes呢???

posted @ 2024-04-14 11:30  刘一二  阅读(650)  评论(0编辑  收藏  举报