zoukankan      html  css  js  c++  java
  • [转]maven jetty plugin

    http://www.blogjava.net/fancydeepin/archive/2012/06/23/maven-jetty-plugin.html

    前言: 在 maven 下测试调试时,相比较 Tomcat 、Jboss 、Jetty 而言,个人更倾向于使用 Jetty Plugin。
    怎么说呢?使用 Jetty Plugin 的时候最爽的是不用你敲打包、部署,然后再启动服务器的指令,只需敲一句:mvn jetty:run
    或直接点 eclipse 上的 run 按钮就完事了。而且更爽的是,你修改资源文件,Jetty 能自动扫描到并及时给予反馈进行重加载,
    这对修改java文件很有帮助,不用每次修改java文件都要重启服务器,省掉了不少没必要浪费的时间。
    当然,如果想要 Jetty 跑得更理想,还需要禁止 Jetty 使用映射缓存。

    环境:

    Maven  3.0.4
    Eclipse  3.6
    maven-jetty-plugin 6.1.10


    项目结构:


    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation
    ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.fancy</groupId>
      <artifactId>jetty-plugin-demo</artifactId>
      <packaging>war</packaging>
      <version>1.0</version>
      <name>jetty-plugin-demo Maven Webapp</name>
      <url>http://maven.apache.org</url>
      
      <build>
        <finalName>jetty-plugin-demo</finalName>
        <plugins>
          <!-- Maven Jetty Plugin -->
          <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.10</version>
            <configuration>
              <!-- 每2秒的间隔扫描一次,实现热部署 -->
              <scanIntervalSeconds>2</scanIntervalSeconds>
            </configuration>
          </plugin>
        </plugins>
      </build>
      
    </project>


    index.jsp

    <html>
     <body>
      <h1>Maven Jetty Plugin</h1>
      <h2>Hello World!</h2>
     </body>
    </html>


    选中项目,右键选择 Run As --> Maven build
    Name:根据需要,自己取个名
    Goals:输入要执行的 maven 命令
    其余的不用管,直接点击 Run



    Jetty 运行完成之后,访问:http://localhost:8080/jetty-plugin-demo/


     = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

    禁止 Jetty 使用映射缓存:

    当你想试图去修改正在被访问的资源文件,像 CSS、JS、FTL等,这时候你修改完成想保存的时候,是保存不了的。
    你必须停掉 Jetty 容器(如果是在CMD下运行的 Jetty 容器,按 Ctrl + C 停掉 Jetty),才能保存。保存完成后必须
    重新启动 Jetty 容器才能看见效果。这样做无论是对修改 .css、.js、.ftl 等都非常麻烦和不爽。

    究其原因,这是 Jetty 使用了内存映射文件来缓存静态文件。在Windows下面,使用内存映射文件会导致文件被锁定。
    解决方案是不使用内存映射文件来做缓存。步骤如下:

    根据所使用 Jetty 版本在本地的 maven 仓库中找到 Jetty 版本对应的jar包。

    如:
        <plugins>
          <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.10</version>
          </plugin>
        </plugins>

    则需找到( 我的本地的 maven 仓库是在 D:RepositoriesMaven ):
    D:RepositoriesMavenorgmortbayjettyjetty6.1.10jetty-6.1.10.jar

    用解压缩工具打开此jar包,进到:
    jetty-6.1.10.jarorgmortbayjettywebapp
    找到webdefault.xml文件,即: jetty-6.1.10.jarorgmortbayjettywebappwebdefault.xml
    解压出此文件webdefault.xml,找到:
    <param-name>useFileMappedBuffer</param-name>
    <param-value>true</param-value>

    将 true 改成 false,以禁止使用映射缓存。

    删除原jar包中的webdefault.xml文件,将修改过的webdefault.xml文件压缩进去,OK。搞定。

    这样之后就能在 Jetty 运行时修改并保存资源文件。

  • 相关阅读:
    es5
    总有你用的上插件
    三级联动
    jquery快速入门
    动态创建数据table
    背景裁切
    移动web-bootstrap
    ionic开发之Android可以很快打开主页,iOS要几分钟打开主页
    .Net语言 APP开发平台——Smobiler学习日志:如何在手机上快速实现CandleStickChart控件
    .Net语言 APP开发平台——Smobiler学习日志:如何快速实现Timer计时功能
  • 原文地址:https://www.cnblogs.com/jackpang/p/3599679.html
Copyright © 2011-2022 走看看