<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-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 默認是 /,也就是說,項目的訪問入口地址是:http://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 - 
    "http://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 的配置信息可參考 http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html


      
    posted on 2015-06-23 15:05 fancydeepin 閱讀(49084) 評論(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
    贊,樓主寫得真棒  回復  更多評論
      
    主站蜘蛛池模板: 成人免费看黄20分钟| **aaaaa毛片免费同男同女| 一进一出60分钟免费视频| 一级日本高清视频免费观看| 国产人成免费视频| 久久精品亚洲综合| 77777亚洲午夜久久多喷| 美女裸免费观看网站| 久久午夜伦鲁片免费无码 | 野花视频在线官网免费1| 四虎影视大全免费入口| 久久久久无码精品亚洲日韩 | 免费萌白酱国产一区二区| 久久精品亚洲日本波多野结衣| 在线观看免费视频一区| 好吊妞998视频免费观看在线| 国产午夜亚洲精品国产| 日本免费一区二区久久人人澡| 国产精品二区三区免费播放心| 久久精品国产亚洲AV无码麻豆| 特级aa**毛片免费观看| 久久精品国产亚洲5555| 亚洲av无码专区首页| 在线看片韩国免费人成视频| 亚洲美女又黄又爽在线观看| 香蕉视频亚洲一级| 亚洲一区二区三区无码中文字幕| 日韩成人免费视频| 日本亚洲免费无线码| 国产L精品国产亚洲区久久| 亚洲AV永久无码精品一福利| 亚洲精品色婷婷在线影院| 亚洲AV色欲色欲WWW| 久久久久久亚洲精品不卡| 100部毛片免费全部播放完整| 亚洲综合色婷婷在线观看| 亚洲免费综合色在线视频| 亚洲国产日韩在线人成下载| 一级毛片全部免费播放| 一区二区三区亚洲| 日本a级片免费看|