使用Gradle创建SringBoot微服务项目
- 一、 创建Springboot项目
- 0、阿里云脚手架创建项目
- 1、引入 t springboot
- 2 、引入依赖
- 3、执行 geradle bootRun 指令
- 4、spring-boot-gradle-plugin 插件‘
- 二、多模块项目
- 1、settings.gradle
- 2、build.gradle
- 3、version.gradle
- 4、test_service的配置
- 5、service_order、service_user的配置
一、 创建Springboot项目
Spring Boot Gradle 插件在 Gradle 提供 Spring Boot 支持。它允许您打包可执行 jar 或 war 归档文件,运行 SpringBoot 应用程序,并使用 Spring-Boot-dependencies 提供的依赖管理。
相关文档请参考:
https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#running-your-application
0、阿里云脚手架创建项目
可以通过阿里云start快速生产java工程脚手架,方便快捷,具体步骤如下所示
https://start.aliyun.com/
1、引入 t springboot
该插件发布在 Gradle 的插件门户网站上,可以使用插件块来应用:
plugins {
id 'org.springframework.boot' version '2.3.7.RELEASE' //维护springboot版本号,不单独使用,和下面两个插件一起用
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
//进行依赖管理,在引入其它boot依赖时省略版本号、解决jar包冲突问题
id 'java'
}
2 、引入依赖
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
//省略版本,原生bom支持,插件management提供
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
3、执行 geradle bootRun 指令
要想运行当前 Springboot 项目,直接执行 gradle bootRun 指令或者 idea 右侧按钮即可。
当然如果想让当前项目打成可执行 jar 包,只需执行: gradle bootJar 指令即可。
Cloud 项目创建也可以借助于脚手架创建,与 Boot 项目类似。
4、spring-boot-gradle-plugin 插件‘
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.4.1'
}
}’
可以替换一下两个插件
apply plugin: ‘org.springframework.boot’
apply plugin: ‘io.spring.dependency-management’
二、多模块项目
1、settings.gradle
rootProject.name = 'test'
include 'test_bean'
include 'test_common'
include 'test_gateway'
include 'test_service'
include 'test_service:service_user'
findProject(':test_service:service_user')?.name = 'service_user'
include 'test_service:service_order'
findProject(':test_service:service_order')?.name = 'service_order'
2、build.gradle
description 'gradlegradle微服务实战父工程'
//构建Gradle脚本自身需要的资源,可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
buildscript {
ext {
springBootVersion = '2.2.1.RELEASE'
springCloudVersion = 'Hoxton.RELEASE'
springCloudAlibabaVersion = '0.2.2.RELEASE'
}
//设置仓库
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://repo.spring.io/milestone'}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
//配置全局, 包括root项目和子项目
allprojects {
group 'com.test'
version '1.0-SNAPSHOT'
//配置编码格式
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
//设置仓库
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://repo.spring.io/milestone'}
}
}
apply from: 'version.gradle'
//配置所有子项目
subprojects {
apply plugin: 'java'
apply plugin: 'java-library' //api
apply plugin: 'io.spring.dependency-management'
sourceCompatibility= JavaVersion.VERSION_1_8
targetCompatibility= JavaVersion.VERSION_1_8
//公用的依赖
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}
test {
useJUnitPlatform()
}
// dependencyManagement版本统一管理,类似于父maven的dependencyManagement
dependencyManagement {
dependencies {
for(depJar in rootProject.ext.dependencies){
dependency depJar.value
}
}
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
mavenBom "org.springframework.cloud:spring-cloud-alibaba-dependencies:${springCloudAlibabaVersion}"
}
}
}
project(':test_bean'){
description("gradle微服务实战之bean层:存放表对应的实体类")
}
project(":test_common"){
description("gradle服务实战之公共模块:存放微服务常用的工具类")
//依赖
dependencies {
api 'com.alibaba:fastjson'
api 'mysql:mysql-connector-java'
api 'com.baomidou:mybatis-plus-boot-starter'
api 'io.springfox:springfox-swagger2'
api 'io.springfox:springfox-swagger-ui'
api 'io.jsonwebtoken:jjwt'
api 'org.springframework.cloud:spring-cloud-starter-openfeign'
api 'org.springframework.cloud:spring-cloud-starter-alibaba-sentinel'
api 'org.springframework.cloud:spring-cloud-starter-alibaba-nacos-discovery'
}
}
project(":test_service"){
description("gradle微服务实战之服务模块:存放各个微服务模块")
apply plugin: 'org.springframework.boot'
subprojects {
apply plugin : 'java-library'
apply plugin: 'org.springframework.boot'
dependencies {
api 'org.springframework.boot:spring-boot-starter-web'
api project(':test_bean')
api project(':test_common')
}
}
}
3、version.gradle
// 依赖版本管理
ext {
version = [
"fastjsonVersion" : "1.2.71",
"mybatisPlus" : "3.0.4",
"mysql" : "5.1.47",
"swaggerVersion": "2.8.0",
"jjwtVersion": "0.6.0"
]
dependencies = [
"swagger" : "io.springfox:springfox-swagger2:${version.swaggerVersion}",
"fastjson" : "com.alibaba:fastjson:${version.fastjsonVersion}",
"mybatis-plus-boot-starter" : "com.baomidou:mybatis-plus-boot-starter:${version.mybatisPlus}",
"mysql" : "mysql:mysql-connector-java:${version.mysql}",
"swaggerUI" : "io.springfox:springfox-swagger-ui:${version.swaggerVersion}",
"jjwt" : "io.jsonwebtoken:jjwt:${version.jjwtVersion}"
]
}
4、test_service的配置
build.gradle
bootJar {
enabled = false
}
5、service_order、service_user的配置
子项目如果有单独依赖的包可以自己生命,如果没有就是使用总根目录配置的
build.gradle
plugins {
id 'java'
}
group 'com.test'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}
test {
useJUnitPlatform()
}
bootJar {
enabled = false
}