设为首页 收藏本站
查看: 1179|回复: 0

[经验分享] 如何快速高效地开发和调试基于gradle管理的web应用

[复制链接]

尚未签到

发表于 2017-3-2 07:34:13 | 显示全部楼层 |阅读模式
  本文探讨如何高效快速地开发和调试基于gradle管理的web应用。
gradle是新一代应用构建、版本发布管理工具,功能强大而灵活,号称将取代maven的霸主地位,但是目前在开发和调试web应用程序方面还有很多不足,效率低下。
那么我们能不能基于gradle强大而灵活的功能,探寻出一种简单、高效、便捷的方法,以便在调试web应用过程中修改程序无需重启应用服务器和应用呢?答案是肯定的,接下来就给大家分享bboss开发团队在使用gradle开发调试web应用所使用的行之有效的工具和方法。
工具和方法涉及的技术
1.gradle自定义sourceSet测试源码集技术
2.jetty嵌入式启动技术
3.gradle compileOnly级别包依赖技术(gradle 3.0及以上版本支持)
4.采用bboss ioc管理jetty 应用配置
工具集成和使用
我们直接使用本文附件中包含的工具小程序来调试web应用,这是一个通用的小工具,可以按照以下步骤将这个工具集成到自己web应用对应的gradle工程中。注意:我们将工具对应的程序放置到工程的测试源码目录下面,将工具依赖的jar包级别定义为compileOnly,这样可以避免将工具对应的程序、配置和jar发布到最终的项目版本中(真正的绿色无污染)
第一步 集成调试web应用工具
工具包含启动jetty容器的程序和配置文件,这些文件包含在本文附件中,点击这里下载:下载
DSC0000.png
将解压后的test目录中的org目录复制到gradle工程的测试源码目录下即可,gradle可以灵活指定项目的测试源码目录,本文对应的是test目录,通过其中的类org.eclipse.jetty.webapp.JettyStart来启动和调试web应用。
下面说明一下目录test\org\eclipse\jetty\webapp下面三个文件的作用:
1.jetty.xml
文件内容:

  • <properties>  
  •     <property name="port" value="9081"/>   
  •     <property name="context" value="wowo-frontend"/>   
  •     <property name="webxml" value="./WebRoot/WEB-INF/web.xml"/>   
  •     <property name="resourceBase" value="./WebRoot"/>   

  • </properties>  
  
文件作用:配置jetty端口port,应用上下文context,应用部署描述文件web.xml位置,应用路径resourceBase,这两个路径都是相对于gradle工程根目录,可以根据需要调整相关配置。
2.webdefault.xml
这个文件内容比较多,已经配置好,无需修改,我们只需关注其中一个配置项
useFileMappedBuffer:

  • <init-param>  
  •       <param-name>useFileMappedBuffer</param-name>  
  •       <param-value>false</param-value>  
  •     </init-param>  
  
useFileMappedBuffer必须设置为false,否则在调试的过程中js文件会被锁定,导致js文件无法进行修改。
3. JettyStart.java
在JettyStart的Main方法中,利用bboss ioc加载配置文件jetty.xml,然后启动jetty服务器和web应用。通过执行JettyStart程序,就可以像调试和运行普通的java程序一样调试和运行gradle管理web应用,可以在调试过程中自动加载修改的程序和资源配置文件,避免因修改程序而反复构建、发布和部署应用,大大提升开发和调试的效率。目前工具只支持Http协议,可以通过扩展JettyStart类方便地提供对Https协议的支持。
上述的三个文件中,只有jetty.xml会根据项目的实际情况进行修改和调整,一般情况下其他两个文件不需要改动,除非在调试过程中需要使用更多的jetty功能,比如增加对https协议的支持,那么可以通过修改JettyStart.java程序并在jetty.xml文件中增加相关的配置项,就可以灵活地实现。
第二步 配置工具依赖并加载工具源码和配置文件集
在工程的build.gradle文件中配置工具依赖并加载工具源码和配置文件集
1.修改自定义源码集
在test测试源码块中加载工具对应源程序和配置文件(两个xml文件和一个java类)

  • sourceSets {
  •     main {
  •         java {
  •             srcDir 'src'  

  •         }
  •        resources{
  •             srcDir 'resources'  
  •             srcDir 'src' exclude '**/*.java'  
  •         }
  •     }
  •     test {
  •         java {
  •             srcDir 'test' //包含JettyStart.java 文件  
  •         }
  •         resources {
  •         srcDir 'test'  exclude '**/*.java'//包含两个xml文件  
  •         }

  •     }

  • }
  
2.在dependencies添加运行jetty容器和web应用所需的jar包
以compileOnly级别添加启动jetty容器和web应用所需的第三方jar包,这样在最终发布应用版本中不会包含这些额外引入jar包:

  • dependencies {

  •      compileOnly (

  •            [group: 'javax.el', name: 'javax.el-api', version: '2.2.1', transitive: false],  
  •            [group: 'org.eclipse.jetty.aggregate', name: 'jetty-all-server', version: '8.1.19.v20160209', transitive: false],  
  •            [group: 'org.eclipse.jetty.orbit', name: 'org.apache.jasper.glassfish', version: '2.2.2.v201112011158', transitive: false],  
  •            [group: 'org.eclipse.jetty.orbit', name: 'javax.servlet.jsp', version: '2.2.0.v201112011158', transitive: false],  

  •           [group: 'org.eclipse.jetty.orbit', name: 'org.apache.taglibs.standard.glassfish', version: '1.2.0.v201112081803', transitive: false],  
  •            [group: 'org.eclipse.jetty.orbit', name: 'com.sun.el', version: '2.2.0.v201108011116', transitive: false],  


  •     )

  •      compileOnly (

  •             [group: 'javax.servlet', name: 'javax.servlet-api', version: "3.0.1", transitive: false],  
  •             [group: 'javax.servlet.jsp', name: 'javax.servlet.jsp-api', version: '2.3.1', transitive: false],  

  •         )
  •       //bboss-core包是可选的,如果在项目的compile依赖中已经包含了bboss-core包的引用,那么可以把下面对bboss-core包的引用去掉,否则必须加上  
  •       compileOnly (

  •             [group: 'com.bbossgroups', name: 'bboss-core', version: "5.0.1", transitive: true],  

  •         )
  • }
  
本文的附件中(下载)包含了可以作为参考的build.gradle样例。
第三步 运行和调试web应用     
完成第一步和第二步后,我们就可以通过JettyStart程序来运行和调试web应用了,
首先在web工程右键菜单中gradle sts插件的Refresh All功能来刷新和加载最新的build.gradle配置文件,如图示:
DSC0001.png
然后参考以下图示来调试或者运行 JettyStart,即可调试或者运行gradle管理的web应用了:
DSC0002.png
    www.togv.net/guanlipeixun/4ws6xllk3xl3ciz8reaf.htm
    www.togv.net/guanlipeixun/nscr433em4n4niblrnex.htm
    www.365128.com/user/aqiandao/65.html
    www.365128.com/user/aqiandao/66.html
    www.365128.com/user/aqiandao/67.html
    www.365128.com/user/aqiandao/68.html
    www.365128.com/user/aqiandao/70.html
    www.365128.com/user/aqiandao/71.html
    www.365128.com/user/aqiandao/72.html
    www.365128.com/user/aqiandao/64.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348980-1-1.html 上篇帖子: 报错:HTTP Status 404 下篇帖子: ecplise配置maven项目
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表