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

[经验分享] Java Gradle入门指南之gretty插件(安装、命令与核心特性)

[复制链接]

尚未签到

发表于 2017-3-1 08:15:04 | 显示全部楼层 |阅读模式
  Java Web应用开发时常使用Gradle来进行项目管理,可以十分便利地解决包依赖等问题。war插件的出现,让项目部署成为一个复制粘贴的过程,那有没有办法让Java web应用的部署,就像windows下安装软件,双击一下就可以呢?又或者Java web应用开发过程中,有没有办法自动检测项目变化,自动编译与加载呢?
  gretty支持热部署、HTTPS、转发、调试、自动化运行环境等诸多特性,让开发和部署变得更加简单。本文将介绍gretty插件的最常用的几种特性和使用方法,适合对使用过Java web和Gradle的童鞋。如有错误,请不吝指出,非常感谢;如本文对你有用,右下角点个推荐吧!

1.安装gretty
// JDK6+,Gradle 1.10+  
// build.gradle
  
buildscript {
  repositories {
  jcenter()
  }
  dependencies {
  classpath 'org.akhikhl.gretty:gretty:+'
  }
  
}
  

  
apply plugin: 'org.akhikhl.gretty'
  或
apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
2.常用命令

2.1 gradle appRun


  • 编译当前项目
  • 不依赖于war任务
  • 另有appRunWar、appRunDebug、appRunWarDebug
2.2 gradle appStart


  • 编译当前项目
  • 使用新java线程开启服务,监听端口,等待HTTP请求
  • 不依赖于war任务
  • 不主动关闭服务,即一直在运行,需用gradle appStop关闭
  • 另有appStartWar、appStartDebug、appStartWarDebug
2.3 gradle jetty* / gradle tomcat*


  • 包含Start、Run、Stop等,与2.1-2.2用法一致
3.核心特性

3.1 选择servlet 容器
gretty {  // 端口默认8080
  // serlvetContainer 支持 jetty7/8/9,tomcat7/8
  // contextPath 设置根路径,默认为项目名称
  port = 8081
  serlvetContainer = 'jetty9'  
  contextPath = '/'
  
}

3.2 热部署(Gretty 1.1.5+)
  常用属性


  • scanInterval:监视周期,单位为秒,设置为0等于完全关闭热部署
  • scanDir:需要监视的文件夹
  • recompileOnSourceChange:监视源码变动,自动编译
  • reloadOnClassChange:编译的类发生改变,自动加载
  • reloadOnConfigChange:WEB-INF或META-INF发生改变
  • reloadOnLibChange:依赖发生改变
  Gretty默认如下


  • scanInterval 设置为1,每秒扫描改动1次
  •   scanDir默认为下 :

      ${projectdir}/src/main/java
      
    ${projectdir}/src/main/groovy
      
    ${projectdir}/src/main/resources
      
    ${projectdir}/build/classes/main
      
    ${projectdir}/build/resources/main



  •   recompileOnSourceChange、reloadOnClassChange、reloadOnConfigChange 和>
3.3 快速加载


  • fastReload属性,默认为true,监听webapp/中的内容,文件发生改变,无需重启。
3.4 添加新的资源目录
// 除了src/main/webapp外,可另外指定资源目录  
gretty{
  // ...
  extraResourceBase 'dir1',
  extraResourceBases 'dir2','dir3'
  // ...
  
}

3.5 HTTPS 支持


  •   生成自签名证书,仅在开发时使用
    gretty {  
    httpsEnabled = true
      
    // httpEnabled = false 禁用http
      
    // httpsPort = 443 httpsPort默认为 8443
      
    }

      certificate → "${project.buildDir}/ssl/cert"
      
    key-store → "${project.buildDir}/ssl/keystore"
      
    key-store and key-manager passwords→"${project.buildDir}/ssl/properties"
      
    key-store → 配置HTTPS连接


  •   手动配置
    gretty {  
    sslKeyStorePath = '/some/path/keystore'
      
    sslKeyStorePassword = 'someKeystorePassword'
      
    sslKeyManagerPassword = 'someKeyManagerPassword'
      
    sslTrustStorePath = '/another/path/trust_keystore'
      
    sslTrustStorePassword = 'someTrustStorePassword'
      
    }

3.6 转发(Gretty 1.1.7+)


  •   步骤1:在WEB-INF/web.xml中加入以下内容
    <filter>  <filter-name>RedirectFilter</filter-name>
      <filter-class>org.akhikhl.gretty.RedirectFilter</filter-class>
      
    </filter>
      
    <filter-mapping>
      <filter-name>RedirectFilter</filter-name>
      <url-pattern>/*</url-pattern>
      <dispatcher>REQUEST</dispatcher>
      <dispatcher>FORWARD</dispatcher>
      
    </filter-mapping>

  •   步骤2:创建WEB-INF/filter.groovy,设置转发规则
    // 根地址转发到 index.html
      
    filter>  forward 'index.html'
      
    }
      
    // 旧地址转发到新地址

      
    filter>  redirect contextPath + '/new/path'
      
    }
      
    // 地址参数转为查询参数

      
    filter>  redirect new URIBuilder(requestURI).setPath(contextPath + '/anotherPath')
      .setQuery(matches.relPath[0][1])
      
    }
      
    // 将HTTP流量全部转发至HTTPS
      
    filter scheme: 'http', {
      redirect new URIBuilder(requestURI).setScheme('https').setPort(httpsPort)
      
    }

3.7 调试(Debug)
// 为所有的debug命令配置参数  
gretty {
  debugPort = 5005      // 默认
  debugSuspend = true   // 默认
  
}
// 仅针对appRunDebug  
gretty {
  afterEvaluate {
  appRunDebug {
  debugPort = 5005
  debugSuspend = true
  }
  }
  
}

4.产品生成

4.1 gradle buildProduct


  • 生成安装文件
  • 生成目录位于 build/output/${project.name}
  •   结构如下
      

    --build/output/${project.name}  
    |--conf/     => 配置文件
      
    |--runner/  => servlet container 所需库
      
    |--starter/  
      
    |--webapps/   => java web 应用
      
    |--restart.bat/sh
      
    |--run.bat/sh
      
    |--start.bat/sh
      
    |--stop.bat/sh

  •   多应用,需在build.gradle中配置 product,例如
    product {  webapp project // include this project
      webapp ':ProjectA'
      webapp ':ProjectB'
      
    }

4.2 gradle archiveProduct


  • 打包生成的安装文件
  • 生成目录位于 build/output/${project.name}
  本文同步发布在 Github,后期将不断更新,欢迎关注。
  

运维网声明 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-348540-1-1.html 上篇帖子: SolrCloud-5.2.1 集群部署及测试 下篇帖子: 使用intellij idea搭建MAVEN+springmvc+mybatis框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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