tomcat目录说明

先来看一下tomcat的目录:

|-bin

|-conf

|-lib

|-logs

|-temp

|-webapps

|-work

tomcat 的核心是servlet容器,叫 catalina。

其中以下目录是 tomcat 的核心目录,也就是 catalina 目录

|-conf

|-logs

|-webapps

|-work

剩下的目录是 tomcat 的 外部程序。

|-bin

|-lib

|-temp

执行 /bin/startup.bat ,内部调用了 /bin/catalina.bat 。catalina.bat 通过变量 CATALINA_BASE 确定 catalina 目录位置(默认是当前的tomcat目录)。

IDEA启用Tomcat

IDEA 就是通过设置 CATALINA_BASE 变量,指定 catalina 目录的位置。在启动TOMCAT时,控制台中都会打印出

USING CATALINA_BASE: "...."

这样的日志。打开这个目录,就可以看到 conf、logs、webapps、work 目录一个不少。

通过这种复制 catalina 目录,tomcat 就能启动多个servlet容器,即多个javaweb项目。

如果项目没有使用 maven,那么运行的项目就保存在 CATALINA_BASE/webapps 下。如果使用了maven,那么在 CATALINA_BASE/conf/{hostname}/{context}/*.xml 文件里就指定了运行项目的所在位置。一般都在开发项目的 target 目录下。

IDEA中Tomcat的配置

IDEA中tomcat的热部署指的就是

On 'Update' action: []

On frame deactivation: []

前者是更新动作(Build Project 就属于 Update Action 的一种)

后者是IDEA界面失去焦点时,也就是用户切换IDEA窗口时。

二者的配置选项都有 update classses and resources 。这个配置项的意思是更新类和资源,也就是 java和resource目录。

比如:On 'Update' action: update classses and resources ,指的就是 Build Project 的同时,要更新tomcat运行项目目录下的类和资源文件。

注意:这里没有说更新 webapps (src/main/webapps)

所以当修改了 src/main/webapp 下的文件,不会热部署到tomcat下。需要手动将修改的文件覆盖到 tomcat 运行项目目录下。

部署修改后的 src/main/webapps

maven插件 resources:copy-resources 会将开发项目目录下资源文件复制都运行项目目录下,其中就包含了 src/main/webapp。

maven的install、package 都绑定了 resources:copy-resources 插件,可以通过执行 install、package 顺带执行 resources:copy-resources,将 src/main/webapp 下的文件复制到tomcat 运行项目目录下。

不过install、package命令毕竟生命周期比较长,执行慢,仅仅更新一下 jsp 文件就 install、package,有些不值当的。

可以将 resources:copy-resources 绑定到 validate 上。validate 是maven中生命周期很短的一个,执行快。绑定的方法如下:

<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/${project.build.finalName}</outputDirectory>
<resources>
<resource>
<directory>src/main/webapp</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

这样执行 validate 的同时也会执行 resources:copy-resources,将插件中配置的 src/main/webapp 复制到 outputDirectory 目录下了。(可以将目录再配置的具体些,这样复制时也能节省时间)

IDEA编译项目后,target目录下的jsp文件不更新的更多相关文章

  1. 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件

    原 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件 原文章链接:https://blog.csdn.net/beauxie/article/de ...

  2. 工程代码不编译src的java目录下的xml文件问题及解决

    IDEA的maven项目中,默认源代码目录下(src/main/java目录)的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉.如果使用的是Eclipse,Eclip ...

  3. IDEA中不编译src/main/java目录下的*.xml文件

    使用idea构建maven项目时不编译src/main/java目录下写的mapper.xml文件,这是找到pom.xml文件,在<build>节点下添加如下代码: <!-- map ...

  4. 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

    找了这么久资料,总算解决了 感谢博客园:http://www.cnblogs.com/xsht/p/5275081.html 感谢百度:http://zhidao.baidu.com/link?url ...

  5. 使用idea搭建maven项目时 java目录下的xml文件没有加载的解决方法

    今天在idea集成开发环境下 使用maven搭建了ssm项目,遇到了3个问题 首先我们先复习一下知识点: 第一步:在web.xml中配置spring监听器 <!-- spring监听器 加载sp ...

  6. tomcat编译项目后,classes文件没有相应的改变;

    tomcat编译项目后,classes文件没有相应的改变: tomcat不能将项目部署到服务器: 1.首先,在tomcat安装目录webapps中将编译后的整个项目删掉,然后再在eclipse将tom ...

  7. 由于xftp打开target目录,导致maven编译的时候target目录无法访问,打包失败

    由于xftp打开target目录,导致maven编译的时候target目录无法访问,打包失败: 在xftp里关闭target目录就可以了...无时不在的坑

  8. maven 编译部署src/main/java下的资源文件

    maven 编译部署src/main/java下的资源文件 maven默认会把src/main/resources下的所有配置文件以及src/main/java下的所有java文件打包或发布到targ ...

  9. 【Unity基础知识之三】Unity Assets目录下的特殊文件夹名称

    Unity3D的特殊目录名称   Unity预留了一些目录名称,这些目录有着特殊的含义.比较重要的有: Resources这个目录下的所有文件都会被打包到发布版本中,程序可以通过文件路径来访问它们.这 ...

随机推荐

  1. bzoj5315/luoguP4517 [JSOI2018]防御网络(仙人掌,dp)

    bzoj5315/luoguP4517 防御网络(仙人掌,dp) bzoj Luogu 题目描述略(太长了) 题解时间 本题和斯坦纳树无关. 题面保证了是一个仙人掌...? 但这个环之间甚至交点都没有 ...

  2. docker-compose + nginx部署前后端分离的项目

    安装docker 安装必要的系统工具 # 更新yum工具 yum update -y # 安装必要的工具 yum install -y yum-utils device-mapper-persiste ...

  3. 如何用python裁剪图片

    如何使用python裁剪图片 如上图所示,这是一张包含了各类象棋棋子的图片.我们需要将其中每一个棋子都裁剪出来,此时可以利用python的 PIL库 实现. 一. 安装PIL库 如果此前没有安装过PI ...

  4. Mysql之B+树索引实战

    索引代价 空间上的代价 一个索引都对应一棵B+树,树中每一个节点都是一个数据页,一个页默认会占用16KB的存储空间,所以一个索引也是会占用磁盘空间的. 时间上的代价 索引是对数据的排序,那么当对表中的 ...

  5. 为什么要使用 rabbitmq?

    1.在分布式系统下具备异步,削峰,负载均衡等一系列高级功能; 2.拥有持久化的机制,进程消息,队列中的信息也可以保存下来. 3.实现消费者和生产者之间的解耦. 4.对于高并发场景下,利用消息队列可以使 ...

  6. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几?如何获取当前数据库版本?

    一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几? 一般情况下,我们创建的表的类型是InnoDB,如果新增一条记录(不重启mysq ...

  7. springmvc组件组成以及springmvc的执行过程

    springmvc三大组件 处理器映射器:用户请求路径到Controller方法的映射 处理器适配器:根据handler(controlelr类)的开发方式(注解开发/其他开发) 方式的不同区寻找不同 ...

  8. Java 中,受检查异常 和 不受检查异常的区别?

    受检查异常编译器在编译期间检查.对于这种异常,方法强制处理或者通过 throws 子句声明.其中一种情况是 Exception 的子类但不是 RuntimeException 的子类.非受检查是 Ru ...

  9. 【C语言】预处理、宏定义、内联函数 _

    一.由源码到可执行程序的过程 1. 预处理: 源码经过预处理器的预处理变成预处理过的.i中间文件   1 gcc -E test.c -o test.i 2. 编译: 中间文件经过编译器编译形成.s的 ...

  10. WordPress 网站开发“微信小程序“实战(二)

    原文链接:https://devework.com/wordpres...,转载请用明链注明来源,谢谢! 本文是"WordPress 开发微信小程序"系列的第二篇,本文记录的是开发 ...