用Gradle进行Web开发

Gradle提供了开箱即用的插件用于组装WAR文件,以及将其部署到本地Servlet容器中。

 

使用War以及Jetty插件:

War插件扩展了Java插件:添加了一些用于web应用开发的约定,以及对组装WAR文件的支持。Jetty带了一个嵌入式的容器实现,就是通过给你的应用添加一个HTTP模块。GraldeJetty插件扩展了WAR插件,它提供了一些任务用来把web应用部署到嵌入式的容器中并运行你的应用。

 

既然War插件扩展了Java插件,实际上,这就意味着在你的构建脚本中就不再需要Java插件了,因为War插件会自动引入Java插件。

apply plugin: 'war'

 

web应用的源文件默认是存放在src/main/webapp

 

web应用用到了javax.servlet.HttpServlet,不属于Java标准版的部分,因此要指定此依赖。

利用providedCompile:用于一些在编译要用到,但由运行时环境提供的依赖。在此,运行时环境是Jetty。结果,标记为provided的依赖不会打包进War中。运行时依赖例如JSTL

编译过程中用不到,但在运行时用到,因此会放入war中。

dependencies {

   providedCompile 'javax.servlet:servlet-api:2.5'

   runtime 'javax.servlet:jstl:1.1.2'

}

 

构建项目:

$ gradle build

组装好的war位于build/libs中。

 

默认,war文件名是根据项目的目录名得来的。

 

接下来,我们来讨论对于非标准布局的配置:

.

├──  build.gradle

├──  src

     └──  main

         └──  java

             └──  ...

├──  static

     └──  css

         ├──  base.css

         └──  bg.png

└──  webfiles

     ├──  WEB-INF

          └──  web.xml

     └──  jsp

         ├──  index.jsp

         └──  todo-list.jsp

 

配置如下:

webAppDirName = ‘webfiles’

war {

         from ‘static’

}

你可以查看War插件的DSL指南来了解它的一些配置参数。

 

用一个嵌入式的web容器运行你的应用:

apply plugin: 'jetty'

用于运行web应用的任务是jettyRun

$ gradle jettyRun

:compileJava

:processResources UP-TO-DATE

:classes

> Building > :jettyRun > Running at http://localhost:8080/todo-webapp-jetty

默认端口号是8080,上下文路径就是你的项目名

 

快速应用开发:

一些改动就要重启容器会浪费时间。Jetty插件允许你不重启容器就能修改静态资源以及JSP文件。另外,对于class文件的变动,可以利用JRebel(一种字节码交换技术)来执行热部署。

 

定制Jetty插件:

jettyRun {

httpPort = 9090

contextPath = ‘todo’

}

猜你喜欢

转载自zsjg13.iteye.com/blog/2372765