快速开启第一个Spring Boot项目(gradle构建)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40132006/article/details/81218167

一.首先要确保自己安装java环境和gradle.

这里记录一下ubuntu上快速装gradle:

1.添加ppa仓库

sudo add-apt-repository ppa:cwchien/gradle  

2.更新源

sudo apt-get update  

3.查看可以安装版本

apt-cache search gradle  

4.安装(我这里是装的是4.3.1)

sudo apt-get install gradle-4.3.1

二.通过Spring Initializr初始化一个Spring Boot原型

1.进入Spring官网(https://start.spring.io/),根据自己要求选填,点击Generate Project按钮会下载一个zip格式的压缩包;

三.用Gradle编译项目

1.在项目的根目录,执行gradle build命令对项目构建.

2.在该目录下的build/libs目录下会生成一个jar包(就是编译后的可执行文件),用java -jar ***.jar运行该文件.

3.打开网址输入"localhost:8080",会出来网页,由于项目中没有任何请求的处理程序,因此Spring Boot会出现默认的错误提示信息.

4.下面是项目的目录结构.

.
├── build
│   ├── classes
│   │   └── java
│   │       ├── main
│   │       │   └── com
│   │       │       └── libo
│   │       │           └── spring
│   │       │               └── boot
│   │       │                   └── blog
│   │       │                       └── initializrstart
│   │       │                           └── InitializrStartApplication.class
│   │       └── test
│   │           └── com
│   │               └── libo
│   │                   └── spring
│   │                       └── boot
│   │                           └── blog
│   │                               └── initializrstart
│   │                                   └── InitializrStartApplicationTests.class
│   ├── libs
│   │   └── initializr-start-0.0.1-SNAPSHOT.jar
│   ├── reports
│   │   └── tests
│   │       └── test
│   │           ├── classes
│   │           │   └── com.libo.spring.boot.blog.initializrstart.InitializrStartApplicationTests.html
│   │           ├── css
│   │           │   ├── base-style.css
│   │           │   └── style.css
│   │           ├── index.html
│   │           ├── js
│   │           │   └── report.js
│   │           └── packages
│   │               └── com.libo.spring.boot.blog.initializrstart.html
│   ├── resources
│   │   └── main
│   │       ├── application.properties
│   │       ├── static
│   │       └── templates
│   ├── test-results
│   │   └── test
│   │       ├── binary
│   │       │   ├── output.bin
│   │       │   ├── output.bin.idx
│   │       │   └── results.bin
│   │       └── TEST-com.libo.spring.boot.blog.initializrstart.InitializrStartApplicationTests.xml
│   └── tmp
│       ├── bootJar
│       │   └── MANIFEST.MF
│       ├── compileJava
│       └── compileTestJava
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── libo
    │   │           └── spring
    │   │               └── boot
    │   │                   └── blog
    │   │                       └── initializrstart
    │   │                           └── InitializrStartApplication.java
    │   └── resources
    │       ├── application.properties
    │       ├── static
    │       └── templates
    └── test
        └── java
            └── com
                └── libo
                    └── spring
                        └── boot
                            └── blog
                                └── initializrstart
                                    └── InitializrStartApplicationTests.java

1).build.gradle文件:这个是项目的构建脚本,Gradle是以Groovy语言为基础,使用的是简洁的Groovy脚本语言.

buildscript {//buildscript中的脚本优先执行
    //ext    用于定义动态属性
	ext {
		springBootVersion = '2.0.3.RELEASE'
	}
    //使用maven的中央仓库,也可以指定其他库
	repositories {
		mavenCentral()
	}
    //依赖关系
	dependencies {
        //classpath说明执行脚本时,ClassLoader可以使用这些依赖项
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
	}
}
//使用插件
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.libo.spring.boot.blog'
//指定生成的编译文件的版本,默认是Jar包
version = '0.0.1-SNAPSHOT'
//jdk版本
sourceCompatibility = 1.8

repositories {
	mavenCentral()
}


dependencies {
    //依赖用于编译阶段
	compile('org.springframework.boot:spring-boot-starter-web')
    //依赖用于测试阶段
	testCompile('org.springframework.boot:spring-boot-starter-test')
}

2).gradlew和gradlew.bat:是Gradle Wrapper用于构建项目的脚本.使用Gradle Wrapper(不必预先安装Gradle工具,构建项目时会检查是否存在Gradle,如果不存在,会根据配置上的Gradle的版本和安装包的位置来自动获取安装包,并构建项目)的好处在于可以使项目组成员能够使用相同Gradle版本,避免导致编译失败的问题,前者在UNIX上使用后者在Windows上使用.

3).build和.gradle目录:构建后生成的目录和文件.

4).Gradle Wrapper:每个Gradle Wrapper都绑定一个特定的版本的Gradle,当用户在第一次给定的Gradle版本下运行上面的命令之一时,会下载相应的Gradle发布包,并用它来执行构建.

5).src目录

四.项目开发及测试

复制样例程序"initializr-start"到新的hello-world目录下,当然不需要编译文件,最终,新项目的根目录下会有gradle,src目录及build.gradle,gradlew.bat,gradlew文件

1.打开build.gradle文件,将version = '1.0.0',来规范一下.

2.为了规范,将src下的com.libo.spring.boot.blog.initializrstart包内的initializrstartApplication.java改为Application.java,并放在blog目录下,删掉initializrstart文件夹,注意要将java文件中的package以及相关内容全部修改.

package com.libo.spring.boot.blog;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

@SprinngBootApplication = (默认属性的)@Configuration+@EnableAutoConfiguration+@ComponentScan

3.在blog下创建controller文件夹(即对应的包),并创建HelloController.java文件,如下

package com.libo.spring.boot.blog.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController{
	@RequestMapping("/hello")
	public String hello(){
		return "Hello World! Welcome to visit libo.com!";	
	}


}

@RestController 等价于@Controller与@ResponseBody的组合,主要用于返回在RESTful应用常用的JSON格式数据,暗示用户,这是一个支持REST的控制器.

@ResponseBody:将Controller的方法返回对象,通过适当的HttpMessageConverter转换为指定格式后,写入Response对象的body数据区.

@RequestMapping:是用来处理请求地址映射的注解,可用在类和方法之上.用在类上,表示类中的所有响应请求的方法都是以改地址作为父路径.还有一些类似的如GetMapping,PostMapping,PutMapping,DeleteMapping,PatchMapping.

4.测试类就不解释了,编写和规范和上述类似,下面是测试代码,JUnit进行测试,

package com.libo.spring.boot.blog.controller;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest{
	@Autowired
	private MockMvc mockMvc;
	@Test
	public void testHello() throws Exception{
		mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andExpect(content().string(equalTo("Hello World! Welcome to visit libo.com!")));
		
	}

}

5.测试通过后,可以对项目gradle build,来编译,并用java启动jar包.当然,也可以使用Gradle Wrapper来进行构建.

五.导入IDE(eclipse)

1.在eclipse中安装Gradle插件Bulidship.

2.import提示一步一步来.

猜你喜欢

转载自blog.csdn.net/weixin_40132006/article/details/81218167