Eclipse下通过Maven的Jetty插件运行Web工程的配置
2016-07-01 15:35
603 查看
Eclipse下通过Maven的Jetty插件运行Web工程的配置,包括启动https
摘要
之前写了Eclipse下怎么通过 Maven 的 Tomcat 插件来运行 Web 工程。近日听说 Jetty 可以动态加载修改后的类, 为了能够更快提高开发效率, 绝对要尝试一下。
Jetty9 最新的Maven插件配置:http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html 或者 最新RELEASE版配置
Jetty 各个版本的限制:http://wiki.eclipse.org/Jetty/Starting/Jetty_Version_Comparison_Table
Jetty 7 必须 Jdk 1.5+,Servlet 2.5,类似于 Tomcat 6,最新 Release 版本:
Jetty 8 必须 Jdk 1.6+,Servlet 3.0,类似于 Tomcat 7,最新 Release 版本:
Jetty 9 必须 Jdk 1.7+,Servlet 3.0+,类似于 Tomcat 8,最新 Release 版本:
国内很多应用也许会去升级JDK版本,但往往还在使用Servlet2.5做开发,所以本文使用 Jetty 8 作为案例。
单独使用HTTP
配置说明:
configuration.scanIntervalSeconds 配置表示新代码的扫描时间间隔(秒),值 <= 0 表示不扫描
configuration.webApp.contextPath 配置表示工程的虚拟目录名
这个配置表示 jetty 运行时的端口号。
另外,截图的绿色部分是因为我的Web应用的 log4j.xml 中使用了 ${sys:catalina.base} 这个Tomcat的环境变量,在启动 Jetty 时会报错,添加了 catalina.base 这个配置后就可以解决这个问题了。还有一个问题是,这个配置必须配置到
Parameter 中,成为启动参数。
以上方案配置完成之后,第一次运行时,Maven会自动去下载插件依赖,编译并运行Web应用,成功之后就可以愉快的通过HTTP的形式访问亲的网站了。
说明,从配置中可以看出,添加了connectors配置,一个是http的配置,一个是https的配置。
connector.port 是端口号,这个端口号必须设置,且优先级比 -Djetty.port 高。
connector.password 是 .keystore 的密码,https 连接必须设置,当前使用了 Tomcat 一样的密钥 changeit。
.keystore 文件的创建方法请查看上一篇博客 Eclipse下通过Maven的Tomcat插件运行Web工程的配置,包括启用https
以上配置完成后,运行,亲就可以通过 http 和 https 两种形式访问亲的网站了。
Jetty 的配置对 pom.xml 的侵入比较大,尤其是 http 和 https 的混合配置更是需要在 pom.xml 中配置固定的端口号,让代码看起来不够干净。
我对 Jetty 的尝试还非常粗浅,希望看到这篇博客的同学能够多多赐教。
© 著作权归作者所有
摘要
之前写了Eclipse下怎么通过 Maven 的 Tomcat 插件来运行 Web 工程。近日听说 Jetty 可以动态加载修改后的类, 为了能够更快提高开发效率, 绝对要尝试一下。
引用来源
Jetty7/8 的Maven插件配置:http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_PluginJetty9 最新的Maven插件配置:http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html 或者 最新RELEASE版配置
Jetty 各个版本的限制:http://wiki.eclipse.org/Jetty/Starting/Jetty_Version_Comparison_Table
Jetty 7 必须 Jdk 1.5+,Servlet 2.5,类似于 Tomcat 6,最新 Release 版本:
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>7.6.17.v20150415</version> </plugin>
Jetty 8 必须 Jdk 1.6+,Servlet 3.0,类似于 Tomcat 7,最新 Release 版本:
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.16.v20140903</version> </plugin>
Jetty 9 必须 Jdk 1.7+,Servlet 3.0+,类似于 Tomcat 8,最新 Release 版本:
<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.10.v20150310</version> </plugin>
国内很多应用也许会去升级JDK版本,但往往还在使用Servlet2.5做开发,所以本文使用 Jetty 8 作为案例。
单独使用HTTP
步骤一
在项目的 pom.xml 里面添加如下配置:<project> .... <build> .... <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.16.v20140903</version> <configuration> <scanIntervalSeconds>5</scanIntervalSeconds> <webApp> <contextPath>/test</contextPath> </webApp> </configuration> </plugin> </plugins> .... </build> .... </project>
配置说明:
configuration.scanIntervalSeconds 配置表示新代码的扫描时间间隔(秒),值 <= 0 表示不扫描
configuration.webApp.contextPath 配置表示工程的虚拟目录名
步骤二
使用Eclipse的Maven Build运行,Goals配置,如图:这个配置表示 jetty 运行时的端口号。
jetty:run -Djetty.port=9080
另外,截图的绿色部分是因为我的Web应用的 log4j.xml 中使用了 ${sys:catalina.base} 这个Tomcat的环境变量,在启动 Jetty 时会报错,添加了 catalina.base 这个配置后就可以解决这个问题了。还有一个问题是,这个配置必须配置到
Parameter 中,成为启动参数。
以上方案配置完成之后,第一次运行时,Maven会自动去下载插件依赖,编译并运行Web应用,成功之后就可以愉快的通过HTTP的形式访问亲的网站了。
混合使用HTTP和HTTPS
步骤一
pom.xml 里面的配置改为如下:<project> .... <build> .... <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.16.v20140903</version> <configuration> <scanIntervalSeconds>5</scanIntervalSeconds> <webApp> <contextPath>/test</contextPath> </webApp> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>9080</port> </connector> <connector implementation="org.eclipse.jetty.server.ssl.SslSelectChannelConnector"> <port>9443</port> <password>changeit</password> </connector> </connectors> </configuration> </plugin> </plugins> .... </build> .... </project>
说明,从配置中可以看出,添加了connectors配置,一个是http的配置,一个是https的配置。
connector.port 是端口号,这个端口号必须设置,且优先级比 -Djetty.port 高。
connector.password 是 .keystore 的密码,https 连接必须设置,当前使用了 Tomcat 一样的密钥 changeit。
.keystore 文件的创建方法请查看上一篇博客 Eclipse下通过Maven的Tomcat插件运行Web工程的配置,包括启用https
步骤二
跟 单独使用HTTP的步骤二 相似,但可以去掉 -Djetty.port=9080 这个配置。以上配置完成后,运行,亲就可以通过 http 和 https 两种形式访问亲的网站了。
总结
Jetty 的定时重载代码的实现比 Tomcat 的好很多,使用 Tomcat 的 onreload 经常修改几下就整个应用在重启,而且经常排队,非常耗时。Jetty 的配置对 pom.xml 的侵入比较大,尤其是 http 和 https 的混合配置更是需要在 pom.xml 中配置固定的端口号,让代码看起来不够干净。
我对 Jetty 的尝试还非常粗浅,希望看到这篇博客的同学能够多多赐教。
补充
Jetty有一个问题,默认使用nio连接会把资源文件(html, css)锁定,解决方案是把nio改为bio:<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>9080</port> </connector> <connector implementation="org.eclipse.jetty.server.ssl.SslSelectChannelConnector"> <port>9443</port> <password>changeit</password> </connector> 这两个connector的配置要改为: <connector implementation="org.eclipse.jetty.server.bio.SocketConnector"> <port>8080</port> </connector> <connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector"> <port>8443</port> <password>changeit</password> </connector>
© 著作权归作者所有
相关文章推荐
- maven学习
- maven插件maven-war-plugin的使用
- jenkins------部署项目到jboss eap下
- maven使用经验集
- java application maven项目打自定义zip包实例(推荐)
- window下安装和配置maven环境
- Eclipse使用maven搭建spring mvc图文教程
- 使用maven+eclipse搭建struts2开发环境
- myeclipse中使用maven前常见错误及解决办法
- Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包
- Eclipse 使用Maven构建SpringMVC项目
- maven利用tomcat插件部署远程Linux服务器的步骤详解
- 配置pom.xml用maven打包java工程的方法(推荐)
- maven搭建java ee项目图文教程
- Java的项目构建工具Maven的配置和使用教程
- maven中下载jar包源码和javadoc的命令介绍
- 表单重复提交处理总结
- Maven私服配置记录 Nexus
- hudson集成maven构建、多环境打包发版
- maven-war-plugin参数说明