Maven集成jetty插件
本机环境
JDK 7 Maven
3.2 Jetty
8.1.9 Eclipse
Luna
pom.xml 配置
[...]
<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 前缀,为方便起见,下面均以命令行方式介绍。)
假设你希望通过命令 mvn jetty:stop 运行关闭 jetty 服务。你须要像以下一样在你的 pom.xml 配置文件里加入一个特殊的port和控制键:
<configuration>
[...]
<stopKey>shutdown</stopKey>
<stopPort>9966</stopPort>
[...]
</configuration>
jetty 服务。
取消文件映射缓存
jetty 默认开启了 useFileMappedBuffer。在 jetty 执行期间,页面所使用的静态文件(如 css 文件等)不同意改动。假设你尝试去改动它
们,保存的时候就会出现 Save could not be completed.
本地的 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>
才那份改动好的 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 的优点是,当你改变文件
新载入的动作。
这样能够更加的方便调试改动。命令行的方式是: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 的一个实现类。
filename:日志文件的名称
filenameDateFormat:日志文件的名称的日期格式,它要求日志文件名称必须含有 yyyy_mm_dd 串
logDateFormat:日志内容的时间格式
logTimeZone:时区
append:追加到日志
logServer:记录訪问的主机名
retainDays:日志文件保存的天数, 超过删除
logCookies:记录 cookies
启动 jetty 服务,在项目的 target 文件夹下会生成一个 access-2015_06_23.log 文件,该文件里的当中一条记录例如以下:
"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插件的更多相关文章
- maven学习四:maven集成jetty插件发布web项目 标签: maven
http://blog.csdn.net/u014079773/article/details/50167833
- maven中jetty插件配置
maven中jetty插件的配置,可用于项目在内置jetty服务器中的部署. <plugin> <groupId>org.mortbay.jetty</groupId&g ...
- Jetty入门(1-2)eclipse集成jetty插件并发布运行应用
一.eclipse集成jetty插件 1.从市场安装jetty插件 2.使用jetty插件发布应用和配置运行环境 debug配置默认共用上述run配置 3.使用jetty插件启动运行和停止运行选中的应 ...
- Maven集成Tomcat插件
目录 类似插件及版本区别: 本地运行,启动嵌入式tomcat: 错误一: 错误二: Idea运行调试: vscode运行调试: 远程部署: 项目中的pom.xml配置: Tomcat中的tomcat- ...
- eclipse运行maven的jetty插件内存溢出
系统运行在Maven中的Jetty插件下,当在Eclipse运行clean jetty:run时,系统提示OutOfMemoryError: PermGen space.解决办法:设置run as - ...
- maven添加jetty插件,同时运行多个实例
<plugins> <!-- jetty插件 --> <plugin> <groupId>org.eclipse.jetty</groupId&g ...
- maven 配置jetty 插件
<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin ...
- maven集成tomcat插件以及乱码解决
Maven已经是Java的项目管理标配,如何在JavaEE开发使用Maven调用Web应用,是很多同学关心的问题.本文将介绍,Maven如何介绍Tomcat插件. Maven Tomcat插件现在主要 ...
- Maven 集成Tomcat插件
转自:https://my.oschina.net/lilw/blog/168667 Maven Tomcat 插件现在主要有两个版本,tomcat-maven-plugin和tomcat7-mave ...
随机推荐
- 递归树处理,配合vue的vueTreeselect组件使用
在项目中经常会使用到tree,并且需要对递归树进行操作. 在vue项目中,使用vue-treeselect插件(https://vue-treeselect.js.org/) 使用中遇到的问题: 1. ...
- zoj 3471 Most Powerful(状压dp+Tsp问题+连续性问题)
上来直接一波敲键盘,直接套Tsp问题的代码 然后WA 发现貌似这道题没有连续性. Tsp问题是一条路径,一个点到另一个点,多了一个限制,所以就需要加多一维 而这道题没有限制,也就是说那一维不需要加,我 ...
- Git学习总结(8)——Git和SVN之间的基本区别
GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征.所以,这篇文章的主要目的就是 ...
- Apache Mahout 0.9、10.1、11. CardinalityException: Required cardinality 60 but got 29
我们可以使用Apache Mahout来快速创建高效扩展性又好的机器学习应用.Mahout结合了诸如H2O算法.Scala.Spark和Hadoop MapReduce等模块,为开发人员提供了一个 ...
- FPGA实现网络通信时的网络字节序问题
在上位机软件发送字符abcd 在鲨鱼上抓包 用逻辑分析仪从FPGA网络接收管脚分析 数据接收后存储在位宽为8bit的ram中 从ram中读32bitUDP数据为 64636261 依据以上那个现象, ...
- hdu 4966 最小树形图
将每门课等级拆成0,1,2,3...a[i]个点,对每一个等级大于0的点向它低一级连边,权值为0[意思是,若修了level k.则level(0~k)都当做修了] 将输入的边建边,权值为money[i ...
- tensorflow入门教程和底层机制简单解说——本质就是图计算,自动寻找依赖,想想spark机制就明白了
简介 本章的目的是让你了解和运行 TensorFlow! 在开始之前, 让我们先看一段使用 Python API 撰写的 TensorFlow 示例代码, 让你对将要学习的内容有初步的印象. 这段很短 ...
- spark 朴素贝叶斯
训练代码(scala) import org.apache.spark.mllib.classification.{NaiveBayes,NaiveBayesModel} import org.apa ...
- (八)统一配置中心-Config
对于配置的重要性,我想我不用进行任何强调,大家都可以明白其重要性.在普通单体应用,我们常使用配置文件(application(*).properties(yml))管理应用的所有配置.这些配置文件在单 ...
- sql server 中文乱码
在数据库中查询每个字段的备注信息(备注信息是用中文写的),查询结果却是乱码,如图: 百度说需要设置数据库的排序规则,设置成中文的,结果还是报5030错误,无法修改字符集为Chinese_PRC_CI_ ...