gradle入门(1-5)创建并运行Web应用
一、使用Gretty运行Web应用
Gretty支持Jetty和Tomcat,它不会被Gradle缺少SLF4J绑定所导致的问题所困扰。
1、配置文件build.gradle
buildscript {
    repositories {
                jcenter()
        }
        dependencies {
                classpath 'org.akhikhl.gretty:gretty:+'
        }
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'
gretty {
        port = 8080
        contextPath = '/'
        servletContainer = 'jetty9'
}
2、开启或终止我们的Web应用:
gradle appStart 命令能运行Web应用。
gradle appStop 命令能终止Web应用。
二、创建 Spring Boot Web 应用项目
使用Spring Boot,我们可以将web应用程序打包为一个可执行的jar文件,这个文件使用嵌入式的servlet容器。
1、添加java插件后的build.gradle
apply plugin: 'java'
sourceCompatibility = 1.8
targetCompatibility = 1.8
Java插件会在我们的构建中添加新的约定(如默认的目录结构)、任务和属性集。
2、添加测试插件后的build.gradle
3、添加springboot支持后的build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath(
'org.springframework.boot:spring-boot-gradle-plugin:1.2.5.RELEASE',
'org.unbroken-dome.gradle-plugins:gradle-testsets-plugin:1.0.2'
)
}
}
apply plugin: 'java'
apply plugin: 'org.unbroken-dome.test-sets'
apply plugin: 'spring-boot'
sourceCompatibility = 1.8
targetCompatibility = 1.8
testSets {
integrationTest { dirName = 'integration-test' }
}
project.integrationTest {
outputs.upToDateWhen { false }
}
check.dependsOn integrationTest
integrationTest.mustRunAfter test
tasks.withType(Test) {
reports.html.destination = file("${reporting.baseDir}/${name}")
}
我们无须使用Bintray的Jcenter Maven仓库,但是由于Gradle测试集插件依赖于该仓库,因此本文中的演示程序也将其加入。
在应用Spring Boot Gradle插件后,我们可以:
- 将应用程序打包为可执行的jar文件。
 - 使用bootrun任务运行程序。
 - 省略Spring Boot依赖的版本信息。
 - 将应用程序打包为war文件。
 
当然,我们也可以对Spring Boot Gradle插件进行配置,并自定义执行和打包应用程序的任务。
4、获取所需的依赖项
我们可以通过所谓的starter POM来获取Spring Boot应用的依赖。Spring Boot的参考指南将starter POM描述如下:
starter POM是一组可以被包含到项目中的便捷依赖描述符。你可以一站式的获取所有需要的Spring和相关技术,无需苦苦寻找演示代码,也无需复制粘贴大量的依赖描述符。
换句话说,我们只需选择正确的starter POM,并将其加入到Gradle构建中即可。
我们可以通过以下步骤获取所需的依赖:
确保所有的依赖都从Maven2的中央仓库获取。
在compile配置里添加spring-boot-starter-actuator依赖,我们之所以需要这个依赖,是因为它提供了一种监控应用运行状态的方法。
在compile配置里添加spring-boot-starter-thymeleaf依赖,我们之所以需要该依赖,是因为我们需要使用Thymeleaf作为创建Web应用的模版引擎。
在testCompile配置里添加spring-boot-starter-test依赖,我们之所以需要该依赖,是因为我们需要在Web应用中编写单元测试和集成测试。
build.gradle的源代码如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath(
'org.springframework.boot:spring-boot-gradle-plugin:1.2.5.RELEASE',
'org.unbroken-dome.gradle-plugins:gradle-testsets-plugin:1.0.2'
)
}
}
apply plugin: 'java'
apply plugin: 'org.unbroken-dome.test-sets'
apply plugin: 'spring-boot'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile(
'org.springframework.boot:spring-boot-starter-actuator',
'org.springframework.boot:spring-boot-starter-thymeleaf'
)
testCompile('org.springframework.boot:spring-boot-starter-test')
}
testSets {
integrationTest { dirName = 'integration-test' }
}
project.integrationTest {
outputs.upToDateWhen { false }
}
check.dependsOn integrationTest
integrationTest.mustRunAfter test
tasks.withType(Test) {
reports.html.destination = file("${reporting.baseDir}/${name}")
}
我们不需要设置Spring Boot依赖的版本,因为Spring Boot Gradle插件能够决定这些依赖的版本。
换句话说,我们可以通过设置Spring Boot Gradle插件的版本来选择偏好的Spring Boot的版本。
5、运行spring boot程序
5.1、方法一、在开发阶段可以使用Spring Boot Gradle插件中的bootRun任务运行应用程序,而无需创建jar文件。
使用这个方法,因为它可以使我们静态的classpath资源(即:在src/main/resources下的文件)都成为可重载的资源。
换句话说,如果我们使用这个方法,就可以在Spring Boot应用程序运行时对这些文件进行更改,而且可以在不重启应用的情况下观察到变化。
通过在命令提示符中输入以下命令,就可以使用该方法了。
gradle clean bootRun
5.2、方法二、我们可以将应用程序打包为一个可执行的jar文件,继而执行所创建的文件。
如果想要在一台远程服务器上运行Spring Boot应用,应当采用这种方法。通过在命令提示符中输入以下命令,就可以创建一个可执行的jar文件了。
gradle clean build
这条命令会在build/libs目录下创建spring-boot-web-application.jar文件。在将其复制到远程服务器上后,可以通过以下命令运行应用程序。
java -jar spring-boot-web-application.jar
gradle入门(1-5)创建并运行Web应用的更多相关文章
- Laravel 从入门到精通  创建并运行一个新的 Laravel 项目
		
创建一个新的 Laravel 项目 正如官方文档所言,有两种方式可以创建一个新的 Laravel 项目,这两种创建方式都是从命令行执行的:第一种是通过全局的 Laravel 安装器,另一种是通过 Co ...
 - PyCharm入门第一步-——创建并运行第一个Python项目
		
创建项目 点击Create New Project 创建项目 输入自己的项目名,点击Create创建 创建文件 右键项目名创建python文件 创建一个HelloPython文件 输入print(&q ...
 - gradle入门
		
gradle入门 简介: Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于 ...
 - Gradle入门(6):创建Web应用项目
		
如果要用 Java 和 Gradle 创建一个 Web 应用项目,我们首先需要创建一个 Java 项目,下面来看看该如何去做. 创建Java项目 我们可以使用Java插件创建一个Java项目,通过添加 ...
 - 项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程
		
之前的几个小节,都是纯手工建文件夹,纯手工拷贝war包,或者纯手工解压个zip看看结果,,,,这还是我写了玩的helloWorld.若是玩大工程.几十个人的团队协同开发时,这么玩,,,,暴躁的程序员估 ...
 - IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
		
转自:http://www.php-note.com/article/detail/854 IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目 作者:php- ...
 - 在GlassFish应用服务器上创建并运行你的第一个Restful Web Service【翻译】
		
前言 本人一直开发Android应用,目前Android就业形势恶劣,甚至会一路下滑,因此决定学习服务器开发.采用的语言是java,IDE是Intellij,在下载Intellij的同时看到官网很多优 ...
 - Gradle入门(5):创建二进制发布版本
		
在创建了一个实用的应用程序之后,我们可能想将其与他人分享.其中一种方式就是创建一个可以从网站上下载的二进制文件. 这篇教程描述了如何创建一个二进制发布版本,满足以下需求: 二进制发布一定不能使用所谓的 ...
 - 使用cmd命令创建maven(web)项目+项目转换成IDEA项目+项目打包+Jetty运行Web项目
		
3条件:配置好环境 配置环境教程:https://www.cnblogs.com/weibanggang/p/9623705.html 第一步:查看版本信息,在cmd输入mvn –version,如果 ...
 
随机推荐
- 功能性AI术语表
			
算法:一套计算机要遵循的指令.一个算法可以是一个简单的单步程序也可以是一个复杂的神经网络,但是通常被用来指一个模型. 人工智能:这是一个统称.广义上说,软件意味着模仿或取代人类智能的各个方面.人工智能 ...
 - 二叉搜索树(Java实现)
			
二叉搜索树基本操作 求树中的结点个数 判断节点是否为空 向树中插入新结点key-value 树中是否存在key 返回树中key对应的value值 先序遍历 中序遍历 后续遍历 层序遍历 求树中key最 ...
 - mybatis动态insert,update
			
1. 动态update UPDATE ui.user_question_section_xref <set> reviewer = #{0}, score = #{1} , last_up ...
 - [模拟赛] T1 高级打字机
			
Description 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序,支持如下3种操作: 1.T x:在文章末尾打下一个小 ...
 - 大数运算的算法设计和C++实现
			
1.背景 工作中遇到过需要进行极大数据的存储和运算的场景,当时使用Python解决了这个问题,在Python中,整数没有位数限制,使用起来很方便.但是当程序主体使用C/C++实现时,就比较麻烦.所以考 ...
 - 笔记:Hibernate DML
			
Hibernate 提供的HQL(Hibernate Query Language)语句也支持批量 update 和 delete 语法,语法格式如下: [UPDATE | DELETE] FROM ...
 - 最小生成数(并查集)Kruskal算法
			
并查集:使用并查集可以把每个连通分量看作一个集合,该集合包含连通分量的所有点.这两两连通而具体的连通方式无关紧要,就好比集合中的元素没有先后顺序之分,只有属于和不属于的区别.#define N 100 ...
 - SpringBoot 自定义Banner
			
在2016年的最后一天,借用Spring Boot的Banner向各位程序猿同仁们问候一声:Happy New Year. 接下来我们就来介绍一下这个轻松愉快的自定义banner功能.实现的方式非常简 ...
 - Redis这些知识点,是必须知道的!
			
Redis是一个开源(BSD许可)的内存数据结构存储,可作为数据库,缓存和消息队列.相比Memcached它支持更多的数据结构,如string(字符串),hash(哈希),list(链表),set(集 ...
 - if判断 -z -n 参数
			
_echo_error() { echo -ne "\033[31;1m $1\033[0m\n";}_echo_ok() { echo -ne "\033[32;1m ...