• 九江市委书记林彬杨主持召开市委常委会议 对市县机构改革提了这些要求 2019-04-10
  • 2018款奔驰E级购车指南 中低配是主力 2019-04-07
  • 264路胡乱发车,投诉一月依然如故。 2019-04-07
  • 张太雷烈士大学毕业证书回到故乡常州 2019-04-06
  • 日照市今年计划投资158亿 修建幸福公路助发展 2019-04-06
  • 吴青峰新歌口碑持续攀升 获赞“这很吴青峰”青峰 新歌 2019-04-03
  • 《国家人文历史》2018年第4期封面及目录 2019-04-03
  • 统计局:5月份经济运行主要指标呈现五大特点 2019-03-27
  • 罗品禧的专栏作者中国国家地理网 2019-03-27
  • 习近平同上海合作组织成员国领导人共同会见记者并讲话 2019-03-27
  • 陈扬勇谈“党的领导是中国特色社会主义最本质的特征” 2019-03-20
  • 解读习近平八一讲话:铭记辉煌历史 推进强军事业 2019-03-20
  • 发挥自身优势 奋力走在前列——习近平总书记在山东考察回访记 2019-03-19
  • 明年起全面供应国六标准汽柴油 2019-03-19
  • 异类非人思维。如一尼安德特人从2万年前发出的声音。 2019-03-16
  • 随笔-126  评论-247  文章-5  trackbacks-0

    本机环境

    JDK 7 Maven 3.2 Jetty 9.2 Eclipse Luna

    pom.xml 配置

    在你的 pom.xml 文件中添加 jetty 插件的描述信息(查看Jetty更多的版本信息):
    [...]
    <build>
      <plugins>
        <plugin>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-maven-plugin</artifactId>
          <version>9.2.8.v20150217</version>
        </plugin>
      </plugins>
    </build>
    [...]

    启动 & 停止

    命令行方式启动 jetty mvn jetty:run,可以通过 Ctrl + C 停止 jetty 服务。
    或者,在 eclipse 中选中项目 --> 右键 --> Run As --> Maven build...,在 Goals 栏输入 jetty:run(与命令行方式相比,仅仅是
    少了 mvn 前缀,为方便起见,以下均以命令行方式介绍。)

    jetty 9 部署的项目的 Context path 默认是 /,也就是说,项目的访问入口地址是://localhost:8080(不带项目名)
    如果你希望通过命令 mvn jetty:stop 执行关闭 jetty 服务,你需要像下面一样在你的 pom.xml 配置文件中添加一个特殊的端口和控制键:
    <configuration>
      [...]
      <stopKey>shutdown</stopKey>
      <stopPort>9966</stopPort>
      [...]
    </configuration>
    你仍可以通过 mvn jetty:run 启动 jetty 服务,可以通过 mvn jetty:stop 来停止 jetty 服务。

    取消文件映射缓存

    jetty 默认开启了 useFileMappedBuffer,在 jetty 运行期间,页面所使用的静态文件(如 css 文件等)不允许修改。如果你尝试去修改它
    们,保存的时候就会出现 Save could not be completed.

    解决办法,找到 %repo%/org/eclipse/jetty/jetty-webapp/9.2.8.v20150217/jetty-webapp-9.2.8.v20150217.jar(%repo% 表示你
    本地的 maven 仓库的目录,另外,将 9.2.8.v20150217 换成你所使用的版本)。用压缩工具打开它, 找到 jetty-webapp-9.2.8.v2015021
    7.jar/org/eclipse/jetty/webapp/webdefault.xml,将 webdefault.xml 文件解压缩一份出来,用文本编辑器打开它,搜索找到
    useFileMappedBuffer 配置的行,将 true 改成 false 以禁掉缓存。
    <init-param>
      <param-name>useFileMappedBuffer</param-name>
      <param-value>false</param-value>
    </init-param>
    先确认 jetty 服务已经停止,将原文件 jetty-webapp-9.2.8.v20150217.jar/org/eclipse/jetty/webapp/webdefault.xml 删除,将刚
    才那份修改好的 webdefault.xml 文件重新压缩进去即可。

    端口配置

    jetty 默认使用的端口是 8080,命令行的方式修改端口的命令是:mvn -Djetty.port=8081 jetty:run 。pom.xml 配置方式如下:
    <configuration>
      [...]
      <httpConnector>
        <port>8081</port>
      </httpConnector>
      [...]
    </configuration>

    自动热部署

    在你的 pom.xml 中添加如下配置:
    <configuration>
      [...]
      <scanIntervalSeconds>2</scanIntervalSeconds>
      [...]
    </configuration>
    默认值是 0。大于 0 的数值表示开启,0 表示关闭,单位为秒。以配置数值为一个周期,自动的扫描文件检查其内容是否有变化,如果发现文件的
    内容被改变,则自动重新部署运用。命令行的方式:mvn -Djetty.scanIntervalSeconds=2 jetty:run 。

    手动重加载

    在你的 pom.xml 文件中添加如下配置,reload 的可选值 :[automatic|manual]
    <configuration>
      [...]
      <reload>manual</reload>
      [...]
    </configuration>
    默认值为 automatic,它与大于 0 的 scanIntervalSeconds 节点一起作用,实现自动热部署的工作。设为 manual 的好处是,当你改变文件
    内容并保存时,不会马上触发自动扫描和重部署的动作,你还可以继续的修改,直至你在 Console 或命令行中敲回车键(Enter)的时候才触发重
    新加载的动作。这样可以更加的方便调试修改。命令行的方式是:mvn -Djetty.reload=manual jetty:run 。

    访问日志

    在你的 pom.xml 文件添加如下配置:
    <configuration>
      [...]
      <requestLog implementation="org.eclipse.jetty.server.NCSARequestLog">
        <filename>target/access-yyyy_mm_dd.log</filename>
        <filenameDateFormat>yyyy_MM_dd</filenameDateFormat>
        <logDateFormat>yyyy-MM-dd HH:mm:ss</logDateFormat>
        <logTimeZone>GMT+8:00</logTimeZone>
        <append>true</append>
        <logServer>true</logServer>
        <retainDays>120</retainDays>
        <logCookies>true</logCookies>
      </requestLog>
      [...]
    </configuration>
    org.eclipse.jetty.server.NCSARequestLogorg.eclipse.jetty.server.RequestLog 的一个实现类。
    org.eclipse.jetty.server.NCSARequestLog 是一种伪标准的 NCSA 日志格式。下面是一些节点参数的解释:
    filename:日志文件的名称
    filenameDateFormat:日志文件的名称的日期格式,它要求日志文件名必须含有 yyyy_mm_dd 串
    logDateFormat:日志内容的时间格式
    logTimeZone:时区
    append:追加到日志
    logServer:记录访问的主机名
    retainDays:日志文件保存的天数, 超过删除
    logCookies:记录 cookies
    启动 jetty 服务,在项目的 target 目录下会生成一个 access-2015_06_23.log 文件,该文件中的其中一条记录如下:
    localhost 0:0:0:0:0:0:0:1 - - [2015-06-23 01:17:05] "GET /css/main.css HTTP/1.1" 304 - 
    "//localhost:8081/"  "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 
    Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0" "JSESSIONID=2gyikovul2iz168116l2afo4f"

    转储快照

    在你的 pom.xml 文件添加如下配置:
    <configuration>
      [...]
      <dumpOnStart>true</dumpOnStart>
      [...]
    </configuration>
    dumpOnStart 默认值为 false,如果设为 true,jetty 在启动时会把当前服务进程的内存信息输出到控制台中,但这并不会保存到文件中。

    WEB上下文

    最常用的是 contextPath,它的配置如下:
    <configuration>
      [...]
      <webApp>
        <contextPath>/${project.artifactId}</contextPath>
      </webApp>
      [...]
    </configuration>
    contextPath 的默认值的 /,${project.artifactId} 引用了 <artifactId> 节点的值,即项目的名称。
    项目的静态资源文件目录默认是 src/main/webapp,如果静态资源目录有多个,或者不在默认的 src/main/webapp 目录下,可做如下配置:
    <configuration>
      [...]
      <webApp>
        <contextPath>/${project.artifactId}</contextPath>
        <resourceBases>
          <resourceBase>${project.basedir}/src/main/webapp</resourceBase>
          <resourceBase>${project.basedir}/commons</resourceBase>
        </resourceBases>
      </webApp>
      [...]
    </configuration>
    引用静态资源文件时,路径不包含资源目录的名称,如 commons/main.css,引用方式为:<link href="main.css" rel="stylesheet" /> 
    更多参数信息可参考 jetty-maven-plugin.html#configuring-your-webapp

    完整的配置

    附 pom.xml 文件中 jetty 插件的完整配置片段:
    <build>
      [...]
      <plugins>
        <plugin>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-maven-plugin</artifactId>
          <version>9.2.8.v20150217</version>
          <configuration>
            <httpConnector>
              <port>8081</port>
            </httpConnector>
            <stopKey>shutdown</stopKey>
            <stopPort>9966</stopPort>
            <!--
            <scanIntervalSeconds>2</scanIntervalSeconds>
            
    -->
            <reload>manual</reload>
            <dumpOnStart>true</dumpOnStart>
            <webApp>
              <contextPath>/${project.artifactId}</contextPath>
              <!--
              <resourceBases>
                <resourceBase>${project.basedir}/src/main/webapp</resourceBase>
                <resourceBase>${project.basedir}/commons</resourceBase>
              </resourceBases>
              
    -->
            </webApp>
            <requestLog implementation="org.eclipse.jetty.server.NCSARequestLog">
              <filename>target/access-yyyy_mm_dd.log</filename>
              <filenameDateFormat>yyyy_MM_dd</filenameDateFormat>
              <logDateFormat>yyyy-MM-dd HH:mm:ss</logDateFormat>
              <logTimeZone>GMT+8:00</logTimeZone>
              <append>true</append>
              <logServer>true</logServer>
              <retainDays>120</retainDays>
              <logCookies>true</logCookies>
            </requestLog>
          </configuration>
        </plugin>
      </plugins>
      [...]
    </build>
    更多有关 jetty 的配置信息可参考 //www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html


      
    posted on 2015-06-23 15:05 fancydeepin 阅读(43784) 评论(5)  编辑  收藏 所属分类: maven

    评论:
    # re: maven jetty plugin 2013-07-30 10:48 | 工作
    写的不错哦  回复  更多评论
      
    # re: maven jetty plugin 2014-08-15 17:34 | 黑客的蜗牛
    +1,博主加油!  回复  更多评论
      
    # re: maven jetty 插件使用 2015-07-22 14:59 | yuxh
    内容格式都很清晰,希望博主提供jetty更深入一点的介绍和应用(优点、为什么在maven中使用这个插件、和tomcat插件比怎么样、和CARGO怎么联系)  回复  更多评论
      
    # re: maven jetty 插件使用 2015-12-25 10:06 | 邱哥
    博文写的很详细,非常棒??!  回复  更多评论
      
    # re: maven jetty 插件使用 2016-01-21 16:16 | hyuga
    赞,楼主写得真棒  回复  更多评论
      
  • 九江市委书记林彬杨主持召开市委常委会议 对市县机构改革提了这些要求 2019-04-10
  • 2018款奔驰E级购车指南 中低配是主力 2019-04-07
  • 264路胡乱发车,投诉一月依然如故。 2019-04-07
  • 张太雷烈士大学毕业证书回到故乡常州 2019-04-06
  • 日照市今年计划投资158亿 修建幸福公路助发展 2019-04-06
  • 吴青峰新歌口碑持续攀升 获赞“这很吴青峰”青峰 新歌 2019-04-03
  • 《国家人文历史》2018年第4期封面及目录 2019-04-03
  • 统计局:5月份经济运行主要指标呈现五大特点 2019-03-27
  • 罗品禧的专栏作者中国国家地理网 2019-03-27
  • 习近平同上海合作组织成员国领导人共同会见记者并讲话 2019-03-27
  • 陈扬勇谈“党的领导是中国特色社会主义最本质的特征” 2019-03-20
  • 解读习近平八一讲话:铭记辉煌历史 推进强军事业 2019-03-20
  • 发挥自身优势 奋力走在前列——习近平总书记在山东考察回访记 2019-03-19
  • 明年起全面供应国六标准汽柴油 2019-03-19
  • 异类非人思维。如一尼安德特人从2万年前发出的声音。 2019-03-16
  • 3d试机号今天家彩网 怎么制作彩票网站 体彩七星彩走势图近1000期 江西时时彩记录 靠谱的3d北京赛车qq群 牛牛碰视频 双色球开奖结果双 幸运飞艇开奖视频直播 欢乐生肖开奖结果 黑龙江体彩6+1走势图 江西时时彩开奖结果在哪里查询 体育彩票大乐透 排列5预测 足彩进球彩12131开奖 北京pk赛车彩票合法吗 竞彩足球比分直播现场彩客网