一、使用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

buildscript {

    repositories {
        jcenter()
    }
    dependencies {
        classpath(
                'org.unbroken-dome.gradle-plugins:gradle-testsets-plugin:1.0.2'
        )
    }
} 
 
apply plugin: 'java'
apply plugin: 'org.unbroken-dome.test-sets' 
 
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}")
} 

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构建中即可。

我们可以通过以下步骤获取所需的依赖:

  1. 确保所有的依赖都从Maven2的中央仓库获取。

  2. compile配置里添加spring-boot-starter-actuator依赖,我们之所以需要这个依赖,是因为它提供了一种监控应用运行状态的方法。

  3. compile配置里添加spring-boot-starter-thymeleaf依赖,我们之所以需要该依赖,是因为我们需要使用Thymeleaf作为创建Web应用的模版引擎。

  4. 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应用的更多相关文章

  1. Laravel 从入门到精通 创建并运行一个新的 Laravel 项目

    创建一个新的 Laravel 项目 正如官方文档所言,有两种方式可以创建一个新的 Laravel 项目,这两种创建方式都是从命令行执行的:第一种是通过全局的 Laravel 安装器,另一种是通过 Co ...

  2. PyCharm入门第一步-——创建并运行第一个Python项目

    创建项目 点击Create New Project 创建项目 输入自己的项目名,点击Create创建 创建文件 右键项目名创建python文件 创建一个HelloPython文件 输入print(&q ...

  3. gradle入门

    gradle入门 简介: Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于 ...

  4. Gradle入门(6):创建Web应用项目

    如果要用 Java 和 Gradle 创建一个 Web 应用项目,我们首先需要创建一个 Java 项目,下面来看看该如何去做. 创建Java项目 我们可以使用Java插件创建一个Java项目,通过添加 ...

  5. 项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程

    之前的几个小节,都是纯手工建文件夹,纯手工拷贝war包,或者纯手工解压个zip看看结果,,,,这还是我写了玩的helloWorld.若是玩大工程.几十个人的团队协同开发时,这么玩,,,,暴躁的程序员估 ...

  6. IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目

    转自:http://www.php-note.com/article/detail/854 IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目 作者:php- ...

  7. 在GlassFish应用服务器上创建并运行你的第一个Restful Web Service【翻译】

    前言 本人一直开发Android应用,目前Android就业形势恶劣,甚至会一路下滑,因此决定学习服务器开发.采用的语言是java,IDE是Intellij,在下载Intellij的同时看到官网很多优 ...

  8. Gradle入门(5):创建二进制发布版本

    在创建了一个实用的应用程序之后,我们可能想将其与他人分享.其中一种方式就是创建一个可以从网站上下载的二进制文件. 这篇教程描述了如何创建一个二进制发布版本,满足以下需求: 二进制发布一定不能使用所谓的 ...

  9. 使用cmd命令创建maven(web)项目+项目转换成IDEA项目+项目打包+Jetty运行Web项目

    3条件:配置好环境 配置环境教程:https://www.cnblogs.com/weibanggang/p/9623705.html 第一步:查看版本信息,在cmd输入mvn –version,如果 ...

随机推荐

  1. Problem : 1012 ( u Calculate e )

    /*tips:本题只有输入,没有输出,在线测试只检测结果,所以将前面几个结果罗列出来就OK了.为了格式输出问题纠结了半天,最后答案竟然还是错的....所以啊,做题还是得灵活变通.*/ #include ...

  2. Numpy库(个人学习笔记)

    一样,咱的计算机还是得先拥有Python,并且安装了Numpy库.有疑问的话可以看这里呦~~~~ 下面开讲: NumPy的主要对象是齐次多维数组.它是一个元素表(通常是数字),并且都是相同类型,由正整 ...

  3. 解决新版的vue-cli后无法通过ip访问vue项目

    今天遇到个问题,之前一直没遇到过,通过vue-cli脚手架搭建的项目,只能通过localhost访问,不能通过IP地址访问. 这是由 webpack 导致的,2017年11月12日的时候 webpac ...

  4. Linux中断子系统:级联中断控制器驱动

    Linux中断子系统 Linux中断子系统是个很大的话题,如下面的思维导图所示,包含硬件.驱动.中断上半部.中断下半部等等.本文着眼于中断控制器(PIC),特别是级联中断控制器驱动部分,对驱动的设计和 ...

  5. 网站转变风格的css变化

    网站换肤,是一个比较老的话题了,理论很清晰,就是要根据js 来变换文件加载的css文件,根据需求来加载不同的css文件,有了这个基础就很明确要怎么做了,但是实际上还要记录当前用户的cookie  保证 ...

  6. 一个类似抖音 APP 拍摄按钮效果的控件

    TouchButton 一个类似抖音 APP 拍摄按钮效果的控件 效果图预览 用法 <net.angrycode.library.TouchButton android:id="@+i ...

  7. Node.JS开发环境准备

    1.安装Nodejs的Windows包. 官网:http://nodejs.org/ 2.可以使用cmd运行nodejs项目,命令格式: node  文件名.js node  文件名 3.对于不熟悉的 ...

  8. 001: 徒手建立一个JavaWeb应用

    不借助IDE,我们徒手建立一个JavaWeb应用. web.xml: <?xml version="1.0" encoding="ISO-8859-1"? ...

  9. Android 使用shape定义不同控件的的颜色、背景色、边框色

    Android 使用shape定义不同控件的的颜色.背景色.边框色 设置按钮的右边框和底边框颜色为红色,边框大小为3dp: 在drawable新建一个 buttonstyle.xml的文件,内容如下: ...

  10. 学号:201621123032 《Java程序设计》第7周学习总结

    1:本周学习总结 1.1:思维导图:Java图形界面总结 2:书面作业 2.1: GUI中的事件处理 2.1.1: 写出事件处理模型中最重要的几个关键词 事件:如鼠标单击,滑动,输入汉字等. 事件源: ...