zoukankan      html  css  js  c++  java
  • IDEA编译项目后,target目录下的jsp文件不更新

    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 目录下了。(可以将目录再配置的具体些,这样复制时也能节省时间)

  • 相关阅读:
    【2020Python修炼记】web框架之 Django自带的序列化组件/form组件
    【2020Python修炼记】web框架之数据批量插入/分页器
    3.栈与队列
    2.链表
    1.数组
    越来越少人用JQuery,但你就不学了吗?(4)
    越来越少人用JQuery,但你就不学了吗?(3)
    越来越少人用JQuery,但你就不学了吗?(2)
    越来越少人用JQuery,但你就不学了吗?(1)
    JS事件、Bom对象和Dom对象(4)(乐字节架构)
  • 原文地址:https://www.cnblogs.com/lhat/p/14196989.html
Copyright © 2011-2022 走看看