Java Gradle入门指南之gretty插件(安装、命令与核心特性)
2016-03-11 20:46
465 查看
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 和 reloadOnLibChange默认为true
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 relPath: '/', { forward 'index.html' } // 旧地址转发到新地址 filter relPath: '/old/path', { redirect contextPath + '/new/path' } // 地址参数转为查询参数 filter relPath: ~'/path/(.*)', { matches -> 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,后期将不断更新,欢迎关注。
相关文章推荐
- 我的创业劲儿,无可阻挡-JAVA学院张孝伟
- Java中读文件操作
- 【JAVA】36、面向对象的封装性(下)
- JavaEE
- Java 异常 越界问题
- LeetCode : Valid Sudoku [java]
- spring web flow起步
- java web的路径问题
- Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
- url地址解码、保留小数点后面两位数字
- Java基础复习系列二
- java.util.zip压缩打包文件总结二: ZIP解压技术
- 发布Java桌面程序
- 发布Java桌面程序
- 用java解leetcode上easy题4
- struts2拦截器-简单实现非法登录验证
- 将java程序释出为可执行文件
- 在32位win7下Genymotion模拟器的安装、配置、以及Eclipse插件安装,一揽子问题和解决方案
- Eclipse 开发工具中使用Git
- 使用 spring jpa 简化jpa开发