父项目:

        <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency></dependencies><profiles><profile><id>dev</id><properties><env>dev</env></properties></profile><profile><id>test</id><properties><env>test</env></properties></profile><profile><id>beta</id><properties><env>beta</env></properties></profile><profile><id>prod</id><properties><env>prod</env></properties></profile></profiles><build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.2</version><configuration><source>${javac.target.version}</source><target>${javac.target.version}</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.7</version><configuration><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>2.9</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.4</version></plugin><plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>8.1.16.v20140903</version></plugin><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>${tomcat7.version}</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${maven.surefire.plugin.version}</version><configuration><skipTests>true</skipTests></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>${maven.jar.plugin.version}</version></plugin><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>${mybatis.generator.plugin.version}</version></plugin></plugins></pluginManagement></build>
</project>

子项目:

    <build><finalName>web</finalName><sourceDirectory>${basedir}/src/main/java</sourceDirectory><resources><resource><directory>${basedir}/src/main/resources</directory><filtering>true</filtering><includes><include>*.xml</include><include>*.properties</include><include>spring/*</include><include>mybatis/**/*</include></includes><excludes><exclude>config.properties</exclude><exclude>jdbc.properties</exclude><exclude>log4j.properties</exclude><exclude>version.properties</exclude></excludes></resource><resource><directory>${basedir}/src/main/resources/config/${env}</directory><includes><include>config.properties</include><include>jdbc.properties</include><include>log4j.properties</include><include>version.properties</include></includes></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${javac.target.version}</source><target>${javac.target.version}</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><configuration><outputDirectory>${project.build.directory}</outputDirectory><archive><manifest><addDefaultImplementationEntries>true</addDefaultImplementationEntries><addDefaultSpecificationEntries>true</addDefaultSpecificationEntries></manifest></archive></configuration></plugin><plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><configuration><connectors><connectorimplementation="org.eclipse.jetty.server.nio.SelectChannelConnector"><host>0.0.0.0</host><port>8081</port></connector></connectors><scanIntervalSeconds>10</scanIntervalSeconds><stopKey>jetty-stop</stopKey><stopPort>9998</stopPort><webApp><contextPath>/safety-web</contextPath></webApp></configuration></plugin></plugins><defaultGoal>install</defaultGoal></build>

回到顶部

概述

jetty是什么?

jetty是轻量级的web服务器和servlet引擎。

它的最大特点是:可以很方便的作为嵌入式服务器

它是eclipse的一个开源项目。不用怀疑,就是你常用的那个eclipse。

它是使用Java开发的,所以天然对Java支持良好。

官方网址

github源码地址

什么是嵌入式服务器?

以jetty来说明,就是只要引入jetty的jar包,可以通过直接调用其API的方式来启动web服务。

用过Tomcat、Resin等服务器的朋友想必不会陌生那一套安装、配置、部署的流程吧,还是挺繁琐的。使用jetty,就不需要这些过程了。

jetty非常适用于项目的开发、测试,因为非常快捷。如果想用于生产环境,则需要谨慎考虑,它不一定能像成熟的Tomcat、Resin等服务器一样支持企业级Java EE的需要。

回到顶部

jetty的嵌入式启动

我觉得嵌入式启动方式的一个好处在于:可以直接运行项目,无需每次部署都得再配置服务器。

jetty的嵌入式启动使用有两种方式:

API方式

maven插件方式

API方式

添加maven依赖

<dependency><groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>9.3.2.v20150730</version> <scope>test</scope> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-annotations</artifactId> <version>9.3.2.v20150730</version> <scope>test</scope> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>apache-jsp</artifactId> <version>9.3.2.v20150730</version> <scope>test</scope> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>apache-jstl</artifactId> <version>9.3.2.v20150730</version> <scope>test</scope> </dependency>

官方的启动代码

public classSplitFileServer { publicstaticvoidmain( String[] args ) throwsException { // 创建Server对象,并绑定端口 Server server = new Server(); ServerConnector connector = new ServerConnector(server); connector.setPort(8090); server.setConnectors(new Connector[] { connector }); // 创建上下文句柄,绑定上下文路径。这样启动后的url就会是:http://host:port/context ResourceHandler rh0 = new ResourceHandler(); ContextHandler context0 = new ContextHandler(); context0.setContextPath("/"); // 绑定测试资源目录(在本例的配置目录dir0的路径是src/test/resources/dir0) File dir0 = MavenTestingUtils.getTestResourceDir("dir0"); context0.setBaseResource(Resource.newResource(dir0)); context0.setHandler(rh0); // 和上面的例子一样 ResourceHandler rh1 = new ResourceHandler(); ContextHandler context1 = new ContextHandler(); context1.setContextPath("/"); File dir1 = MavenTestingUtils.getTestResourceDir("dir1"); context1.setBaseResource(Resource.newResource(dir1)); context1.setHandler(rh1); // 绑定两个资源句柄 ContextHandlerCollection contexts = new ContextHandlerCollection(); contexts.setHandlers(new Handler[] { context0, context1 }); server.setHandler(contexts); // 启动 server.start(); // 打印dump时的信息 System.out.println(server.dump()); // join当前线程 server.join(); } }

直接运行Main方法,就可以启动web服务。

注:以上代码在eclipse中运行没有问题,如果想在Intellij中运行还需要为它指定配置文件。

如果想了解在Eclipse和Intellij都能运行的通用方法可以参考我的github代码示例。

我的实现也是参考springside的方式。

代码行数有点多,不在这里贴代码了。

完整参考代码

Maven插件方式

如果你熟悉maven,那么实在太简单了

注: Maven版本必须在3.3及以上版本。

(1) 添加maven插件

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

(2) 执行maven命令:

mvn jetty:run

讲真,就是这么简单。jetty默认会为你创建一个web服务,地址为127.0.0.1:8080。

当然,你也可以在插件中配置你的webapp环境

<plugin><groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.3.12.v20160915</version> <configuration> <webAppSourceDirectory>${project.basedir}/src/staticfiles</webAppSourceDirectory> <!-- 配置webapp --> <webApp> <contextPath>/</contextPath> <descriptor>${project.basedir}/src/over/here/web.xml</descriptor> <jettyEnvXml>${project.basedir}/src/over/here/jetty-env.xml</jettyEnvXml> </webApp> <!-- 配置classes --> <classesDirectory>${project.basedir}/somewhere/else</classesDirectory> <scanClassesPattern> <excludes> <exclude>**/Foo.class</exclude> </excludes> </scanClassesPattern> <scanTargets> <scanTarget>src/mydir</scanTarget> <scanTarget>src/myfile.txt</scanTarget> </scanTargets> <!-- 扫描target目录下的资源文件 --> <scanTargetPatterns> <scanTargetPattern> <directory>src/other-resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <excludes> <exclude>**/myspecial.xml</exclude> <exclude>**/myspecial.properties</exclude> </excludes> </scanTargetPattern> </scanTargetPatterns> </configuration> </plugin>

官方给的jetty-env.xml范例

 <?xmlversion="1.0"?> <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> <Configureclass="org.eclipse.jetty.webapp.WebAppContext"> <!-- Add an EnvEntry only valid for this webapp --> <Newid="gargle"class="org.eclipse.jetty.plus.jndi.EnvEntry"> <Arg>gargle</Arg> <Argtype="java.lang.Double">100</Arg> <Argtype="boolean">true</Arg> </New> <!-- Add an override for a global EnvEntry --> <Newid="wiggle"class="org.eclipse.jetty.plus.jndi.EnvEntry"> <Arg>wiggle</Arg> <Argtype="java.lang.Double">55.0</Arg> <Argtype="boolean">true</Arg> </New> <!-- an XADataSource --> <Newid="mydatasource99"class="org.eclipse.jetty.plus.jndi.Resource"> <Arg>jdbc/mydatasource99</Arg> <Arg> <Newclass="com.atomikos.jdbc.SimpleDataSourceBean"> <Setname="xaDataSourceClassName">org.apache.derby.jdbc.EmbeddedXADataSource</Set> <Setname="xaDataSourceProperties">databaseName=testdb99;createDatabase=create</Set> <Setname="UniqueResourceName">mydatasource99</Set> </New> </Arg> </New> </Configure>

回到顶部

参考

jetty wiki

jetty官方文档

转载于:https://www.cnblogs.com/softidea/p/5876563.html

maven jetty相关推荐

  1. 【转】Maven Jetty 插件的问题(css/js等目录死锁)的解决

    Maven Jetty 插件的问题(css/js等目录死锁,不能自动刷新)的解决: 1. 打开下面的目录:C:\Users\用户名\.m2\repository\org\eclipse\jetty\j ...

  2. java jetty eclipse_用Eclipse+Maven+Jetty构建Java Web开发环境(详细笔记)

    (软件环境) 『系统』Windows 10 x64 『JAVA』JDK 1.8.0_91 『Eclipse』 Eclipse-oxygen 『Maven』 apache-maven-3.6.3 『Je ...

  3. 天生一对Maven2+Jetty -- Maven2创建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中调试...

    天生一对"Maven2+Jetty" -- Maven2创建并管理WebApp,并使用Maven Jetty Plugin在Eclipse中调试 Maven2代比1代改进很多,其中 ...

  4. 使用Maven Jetty插件

    尽管很长一段时间以来我一直在使用Maven,但直到最近我才使用过Jetty插件. 为了能够测试REST客户端,我创建了一个Servlet,向我显示了所有传入的参数和带有传入请求的标头. 为了在容器中运 ...

  5. Eclipse / Intellij Idea配置Git+Maven+Jetty开发环境

    最近公司给加配了Mac,本想着花一个小时的时间搭好开发环境,最后全部弄好却用了一上午,因为之前在windows上搭建环境的过程中遇到的好多问题在Mac环境下也遇到了,所以决定再花点时间把搭建环境的过程 ...

  6. 搭建IntelliJ IDEA+maven+jetty+SpringMVC 开发环境(二)

    2017一月 23 转载自:http://blog.csdn.net/jdjdndhj/article/details/54691894 搭建IntelliJ IDEA+maven+jetty+Spr ...

  7. 搭建IntelliJ IDEA+maven+jetty+SpringMVC 开发环境(一)

    2017一月 16 转载自 http://blog.csdn.net/jdjdndhj/article/details/54572439 原 搭建IntelliJ IDEA+maven+jetty+S ...

  8. JAXWS CXF HelloWorld + MyEclipse + Maven + Jetty Byron自學視頻01

    JAXWS CXF HelloWorld + MyEclipse + Maven + Jetty Byron自學視頻01 Description: 使用 Apache CXF 建置 WebServic ...

  9. 菜鸟学Java(十九)——WEB项目测试好帮手,Maven+Jetty

    做WEB开发,测试是一件很费时间的事情.所以我们就应该用更简单.更快捷的方式进行测试.今天就向大家介绍一个轻量级的容器--jetty.今天说的etty是Maven的一个插件jetty-maven-pl ...

  10. maven jetty/tomcat/wildfly plugin部署应用到本地容器

    2019独角兽企业重金招聘Python工程师标准>>> <project xmlns="http://maven.apache.org/POM/4.0.0" ...

最新文章

  1. Java 开发技巧详细知识体系总结
  2. java exchange发邮件_java发送exchange邮件问题
  3. 测试眉形的有哪个软件_心理测试:你的眉形是下面的哪种?测你生来命运如何!超准...
  4. Nutanix助力五矿证券迈向金融混合云2.0
  5. 解决上传文件或图片时选择相同文件无法触发change事件的问题
  6. XP硬盘安装Ubuntu 10.10双系统图解(转)
  7. C++ const相关内容学习
  8. java ldap 父_java – DirContext:Active Directory Ldap请求:获取具有父组的用户组
  9. 各种乐器与人声的频率特性说明
  10. 【OpenCV学习笔记】【函数学习】十六(Rect参数介绍)
  11. Python最新官方教程中文版,火了!!
  12. ZooKeeper典型应用场景
  13. Ubuntu配置maven环境变量
  14. 创建模式之工厂、工厂方法、抽象工厂与建造者(builder)
  15. mysql备份导出数据库结构_MySql数据库导出完整版(导出数据库,导出表,导出数据库结构)详解...
  16. Sketch入门基础-画布、Artboard(画板)功能介绍
  17. iOS 应用内购买基础教程 swift篇
  18. Android学习网址大全
  19. 【2017秋季校园招聘笔经面经专题汇总】
  20. 腾讯安全与青藤云安全联合发布“天眼云镜”主机安全产品

热门文章

  1. BootStrap入门教程 (二)
  2. java找出两个List集合的重复项
  3. GIT提交记录和Revert commit过程分析
  4. php计算一段时间工作日,PHP计算8小时工作日的一半
  5. Dubbo学习笔记(一)
  6. Linux的Makefile简单实例教程
  7. 这河里吗?Go 里边空指针还能调用对象方法!
  8. 总结几个字符串类的动态规划(最长公共子串,回文子串,子序列)
  9. JVM整体架构与调优参数说明
  10. centos7 搭建apache druid