本机环境

JDK 7 Maven
3.2
 Jetty
8.1.9
 Eclipse
Luna

pom.xml 配置

在你的 pom.xml 文件里加入 jetty 插件的描写叙述信息(查看Jetty很多其它的版本号信息):
[...]
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.9.v20130131</version>
</plugin>
</plugins>
</build>
[...]

启动 & 停止

命令行方式启动 jetty mvn
jetty:run。能够通过 Ctrl
+ C 停止 jetty 服务。

或者,在 eclipse 中选中项目 --> 右键 --> Run As --> Maven build...。在 Goals 栏输入 jetty:run(与命令行方式相比,不过

少了 mvn 前缀,为方便起见,下面均以命令行方式介绍。) 

jetty 8 部署的项目的 Context path 默认是 /。也就是说,项目的訪问入口地址是:http://localhost:8080(不带项目名)

假设你希望通过命令 mvn jetty:stop 运行关闭 jetty 服务。你须要像以下一样在你的 pom.xml 配置文件里加入一个特殊的port和控制键: 
<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 文件又一次压缩进去就可以。

port配置

jetty 默认使用的port是 8080,命令行的方式改动port的命令是: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.NCSARequestLog 是 org.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>8.1.9.v20130131</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

Maven集成jetty插件的更多相关文章

  1. maven学习四:maven集成jetty插件发布web项目 标签: maven

    http://blog.csdn.net/u014079773/article/details/50167833

  2. maven中jetty插件配置

    maven中jetty插件的配置,可用于项目在内置jetty服务器中的部署. <plugin> <groupId>org.mortbay.jetty</groupId&g ...

  3. Jetty入门(1-2)eclipse集成jetty插件并发布运行应用

    一.eclipse集成jetty插件 1.从市场安装jetty插件 2.使用jetty插件发布应用和配置运行环境 debug配置默认共用上述run配置 3.使用jetty插件启动运行和停止运行选中的应 ...

  4. Maven集成Tomcat插件

    目录 类似插件及版本区别: 本地运行,启动嵌入式tomcat: 错误一: 错误二: Idea运行调试: vscode运行调试: 远程部署: 项目中的pom.xml配置: Tomcat中的tomcat- ...

  5. eclipse运行maven的jetty插件内存溢出

    系统运行在Maven中的Jetty插件下,当在Eclipse运行clean jetty:run时,系统提示OutOfMemoryError: PermGen space.解决办法:设置run as - ...

  6. maven添加jetty插件,同时运行多个实例

    <plugins> <!-- jetty插件 --> <plugin> <groupId>org.eclipse.jetty</groupId&g ...

  7. maven 配置jetty 插件

    <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin ...

  8. maven集成tomcat插件以及乱码解决

    Maven已经是Java的项目管理标配,如何在JavaEE开发使用Maven调用Web应用,是很多同学关心的问题.本文将介绍,Maven如何介绍Tomcat插件. Maven Tomcat插件现在主要 ...

  9. Maven 集成Tomcat插件

    转自:https://my.oschina.net/lilw/blog/168667 Maven Tomcat 插件现在主要有两个版本,tomcat-maven-plugin和tomcat7-mave ...

随机推荐

  1. [剑指offer] 1. 二维数组中的查找 (数组)

    注意是有序数组!! 思路: 1.利用二维数组由上到下,由左到右递增的规律,选取右上角或者左下角的元素a[m][n]与target进行比较, 当target小于元素a[m][n]时,那么target必定 ...

  2. STM32 的 printf() 函数串口重定向(HAL库标准库都适用)

    1.建立工程 2.核心:添加新文件usar_fputc.c (名字随便自己命名),把文件添加到项目中去 #include "stdio.h" #include "stm3 ...

  3. Tomcat样例安全漏洞

    [漏洞描述] Tomcat在使用的时候一般都直接官网下载源代码包直接使用. 默认情况下,Tomcat源码包里面包含了   examples   这个目录,这个目录主要实现一些样例页面的访问. 比如: ...

  4. 2015 Multi-University Training Contest 3 hdu 5325 Crazy Bobo

    Crazy Bobo Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total ...

  5. Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型

    转自原文 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 播放mp4格式的时候提示 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 原因是在IIS中 ...

  6. scrapy研究探索(二)——爬w3school.com.cn

    下午被一个问题困扰了好一阵.终于使用还有一种方式解决. 開始教程二.关于Scrapy安装.介绍等请移步至教程(一)(http://blog.csdn.net/u012150179/article/de ...

  7. 关于Servo项目中Rust代码行数的数据来源

    我两个月之前的一篇博客<为什么我说Rust是靠谱的编程语言>(下面简称原文),在当中"6. 两个半大型成功案例"一节.我以前写道: Servo: 下一代浏览器渲染引擎( ...

  8. 使用ViewPager实现广告滑动效果

    效果图:               watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSk1DNjAx/font/5a6L5L2T/fontsize/400/ ...

  9. C/C++数据类型的转换之终极无惑

    程序开发环境:VS2012+Win32+Debug 数据类型在编程中常常遇到.尽管可能存在风险,但我们却乐此不疲的进行数据类型的转换. 1. 隐式数据类型转换 数据类型转换.究竟做了些什么事情呢?实际 ...

  10. 37、ifconfig命令

    很多windows很熟悉ipconfig命令行工具.它被用来获取网络接口配置信息并对此进行改动.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config). 通常须 ...