首页 > 其他分享 >使用gradle的方式进行Springboot3的web开发(微服务版)

使用gradle的方式进行Springboot3的web开发(微服务版)

时间:2023-09-11 11:57:24浏览次数:45  
标签:web spring boot nacos gradle api Springboot3 org cloud

简要:

最近看了很多的Springboot3的项目,但是发现很多都是用maven来进行版本管理的,很少有用gradle来管理的,通过网上查找资料,看视频,终于自己写一个gradle管理的Springboot3的项目

 

第一步:创建项目

注意:JDK的版本必须要在17或者以上。

 

第二步:设置gradle仓库

 

第三步:创建项目及子模块

 

添加模块和微服务

 

其中build.gradle中引入的依赖和配置

  1 description 'boot3的测试'
  2 
  3 //构建Gradle脚本自身需要的资源,可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
  4 buildscript {
  5     ext {
  6         springBootVersion = '3.0.2'
  7         springCloudVersion = '2022.0.0'
  8         springCloudAlibabaVersion = '2022.0.0.0-RC1'
  9     }
 10 
 11     //设置仓库
 12     repositories {
 13         mavenLocal()
 14         maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
 15         maven { url 'https://repo.spring.io/milestone' }
 16     }
 17 
 18     dependencies {
 19         classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
 20     }
 21 
 22 }
 23 
 24 
 25 //配置全局, 包括root项目和子项目
 26 allprojects {
 27     group 'com.an'
 28     version '1.0-SNAPSHOT'
 29 
 30     //配置编码格式
 31     tasks.withType(JavaCompile) {
 32         options.encoding = "UTF-8"
 33     }
 34 
 35     //设置仓库
 36     repositories {
 37         mavenLocal()
 38         maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
 39         maven { url 'https://repo.spring.io/milestone' }
 40     }
 41 }
 42 
 43 //引入版本管理
 44 apply from: 'version.gradle'
 45 
 46 
 47 //配置所有子项目
 48 subprojects {
 49 
 50     apply plugin: 'java'
 51     apply plugin: 'java-library' //api
 52     apply plugin: 'io.spring.dependency-management'
 53 
 54     sourceCompatibility = '17'
 55     targetCompatibility = '17'
 56 
 57 
 58     //公用的依赖
 59     dependencies {
 60         compileOnly 'org.projectlombok:lombok:1.18.28'
 61         annotationProcessor 'org.projectlombok:lombok:1.18.28'
 62     }
 63 
 64     test {
 65         useJUnitPlatform()
 66     }
 67 
 68 
 69     // dependencyManagement版本统一管理,类似于父maven的dependencyManagement
 70     dependencyManagement {
 71         dependencies {
 72             for (depJar in rootProject.ext.dependencies) {
 73                 dependency depJar.value
 74             }
 75         }
 76         imports {
 77             mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
 78             mavenBom "com.alibaba.cloud:spring-cloud-alibaba-dependencies:${springCloudAlibabaVersion}"
 79         }
 80     }
 81 }
 82 
 83 //实体类
 84 project(':boot3-bean') {
 85     description("boot-bean存放表对应的实体类")
 86     dependencies {
 87         //mybatis-plus
 88         api 'com.baomidou:mybatis-plus-boot-starter'
 89         //mybatis
 90         api 'org.mybatis:mybatis'
 91         //fastjson2,注意:Spring3.0后必须引入第二代fastjson,引入第一代项目会启动不起来
 92         api 'com.alibaba.fastjson2:fastjson2'
 93         //commons
 94         api 'org.apache.commons:commons-lang3'
 95         //mysql
 96         api 'mysql:mysql-connector-java'
 97         //jjwt
 98         api 'io.jsonwebtoken:jjwt'
 99         //druid
100         api 'com.alibaba:druid'
101         //auto-trim,自动去除空格
102         api 'com.supalle:auto-trim'
103     }
104 }
105 
106 //工具类
107 project("boot3-common") {
108     description("boot3-common存放微服务常用的工具类")
109     dependencies {
110         //引入bean
111         api project(':boot3-bean')
112         //SpringBootWeb
113         api 'org.springframework.boot:spring-boot-starter-web'
114         //netty
115         api 'io.netty:netty-all'
116         //生成随机数的工具类
117         api 'cn.hutool:hutool-all'
118 
119     }
120 }
121 
122 //业务类
123 project("boot3-service") {
124     //导入Springboot
125     apply plugin: 'org.springframework.boot'
126     //子类公用依赖
127     subprojects {
128 
129         //导入java-library版本管理,无需在引入版本号
130         apply plugin: 'java-library'
131         //导入Springboot
132         apply plugin: 'org.springframework.boot'
133 
134         dependencies {
135             //导入工具类,并且直接可以引入bean,无需在导入bean
136             api project(':boot3-common')
137             //导入nacos注册发现
138             api 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery'
139             //nacos配置中心来做配置管理
140             api 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config'
141             //springcloud-bootstrap的依赖(为了设置bootstap.yml)
142             api "org.springframework.cloud:spring-cloud-starter-bootstrap"
143             //valid(空值判断)
144             api 'org.springframework.boot:spring-boot-starter-validation'
145             //spring aop
146             api 'org.springframework.boot:spring-boot-starter-aop'
147         }
148     }
149 }
150 
151 //网关类
152 project("boot3-gateway") {
153     subprojects {
154         //导入java-library版本管理,无需在引入版本号
155         apply plugin: 'java-library'
156         //导入Springboot
157         apply plugin: 'org.springframework.boot'
158 
159         dependencies {
160             //gateway网关
161             api 'org.springframework.cloud:spring-cloud-starter-gateway'
162             //导入nacos注册中心
163             api 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery'
164             //nacos配置中心来做配置管理
165             api 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config'
166             //springcloud-bootstrap的依赖(为了设置bootstap.yml)
167             api "org.springframework.cloud:spring-cloud-starter-bootstrap"
168             //负载均衡,不设置这个会报503
169             api 'org.springframework.cloud:spring-cloud-starter-loadbalancer'
170         }
171     }
172 }

 

version.gradle中的配置

 1 // 依赖版本管理
 2 ext {
 3     version = [
 4             "springboot"     : "3.0.2",
 5             //----bean中的依赖----
 6             "fastjson2"      : "2.0.33",
 7             "mybatisPlus"    : "3.5.3",
 8             "mysql"          : "8.0.25",
 9             "mybatis"        : "3.5.1",
10             "lombok"         : "1.18.28",
11             "druid"          : "1.2.18",
12             //----common中的依赖----
13             "hutool"         : "5.8.20",
14             //----service中的依赖----
15     ]
16     dependencies = [
17             //----bean中的依赖----
18             "fastjson2"             : "com.alibaba.fastjson2:fastjson2:${version.fastjson2}",
19             "mybatisPlusBootStarter": "com.baomidou:mybatis-plus-boot-starter:${version.mybatisPlus}",
20             "mysql"                 : "mysql:mysql-connector-java:${version.mysql}",
21             "mybatis"               : "org.mybatis:mybatis:${version.mybatis}",
22             "druid"                 : "com.alibaba:druid:${version.druid}",
23 
24             //----common中的依赖----
25             "springbootWeb"         : "org.springframework.boot:spring-boot-starter-web:${version.springboot}",
26 
27             //----service中的依赖----
28 
29 
30 
31 
32     ]
33 
34 }

 

第四步:分别设置bootstrap.yml中的配置信息

①、我这里就以admin-service的微服务举例,其他微服务也是类似配置即可

 

server:
  port: 52801
spring:
  # 服务名
  application:
    name: chat-admin
  cloud:
    nacos:
      discovery:
        # 服务器中的nacos地址
        server-addr: 192.168.200.130:8848
      config:
        server-addr: 192.168.200.130:8848
        file-extension: yml
  # SpringCloud 2021版本之后,需要用以下方式导入nacos的配置文件
  config:
    import:
      - optional:nacos:chat-admin.yml  # 监听 DEFAULT_GROUP:test.yml

 

②、admin-gateway的网关微服务配置


server:
port: 29801
spring:
application:
name: admin-gateway
cloud:
nacos:
discovery:
server-addr: 192.168.200.130:8848
config:
server-addr: 192.168.200.130:8848
file-extension: yml
# SpringCloud 2021版本之后,需要用以下方式导入nacos的配置文件
config:
import:
- optional:nacos:admin-gateway.yml # 监听 DEFAULT_GROUP:admin.yml

 

 第五步:在nacos中设置yml配置信息

 

设置成功后分别启动项目,可以看到已经能成功启动

 

标签:web,spring,boot,nacos,gradle,api,Springboot3,org,cloud
From: https://www.cnblogs.com/and1rson/p/17693150.html

相关文章

  • 百度上传插件Web Uploader
    WebUploader是由BaiduWebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS6+,android4+。两套运行时,同样的调用方式,可供用户任意选用。采用大文件分......
  • 基于webman的CMS,企业官网通用PHP后台管理系统
    2023年9月11日10:47:00仓库地址:https://gitee.com/open-php/zx-webman-website还有laravel+scui的版本目前还未开源,电商laravel版本差不多,后续在移植webman算是比较标准的php+vue的项目CMS,企业官网通用PHP后台管理系统Englishdoc框架介绍WebmanSCUI后端开发组件php8.......
  • 基于Flask+websocket实现一个在线聊天室网站系统
    在今天的互联网时代,实时通信成为了许多应用和服务的核心特色。从社交媒体到在线游戏,无处不在的即时互动为用户带来了难以置信的沉浸体验。有了这种背景,为何不深入了解如何构建自己的实时聊天应用呢?在本文中,我们将介绍如何使用Flask和Websockets通过Flask-SocketIO框架创建一......
  • 【校招VIP】前端计算机网络之webSocket相关
    考点介绍WebSocket是一种网络通信协议,很多高级功能都需要它。初次接触WebSocket的人,都会问同样的问题:我们已经有了HTTP协议,为什么还需要另一个协议?它能带来什么好处?答案很简单,因为HTTP协议有一个缺陷:通信只能由客户端发起。答案详情解析和文章内容可点击下方链接即可查......
  • Web Scraping指南: 使用Selenium和BeautifulSoup
    WebScraping指南:使用Selenium和BeautifulSoup在当今信息时代,数据是无处不在的宝贵资源。对于许多企业、研究人员以及开发者来说,从互联网上获取准确且有价值的数据变得越来越重要。而Webscraping(网络爬虫)技术则成为了实现这一目标的关键工具。本篇文章将向您介绍一个高级WebScr......
  • 百度WebUploader开源上传控件
    前言首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已.下面先介绍一下WebUploader简介:WebUploader是由BaiduWebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能......
  • [Writeup]2022 NewstarCTF_Week2(Web部分)
    一只网络安全菜鸟--(˙<>˙)/--写博客主要是想记录一下自己的学习过程,过两年毕业了也能回头看看自己都学了些啥东西。由于本人水平有限内容难免有错误、疏漏、逻辑不清、让人看不懂等各种问题,恳请大家批评指正如果我写的东西能对你有一点点帮助,那真是再好不过了......
  • Jmeter获取Websocket多帧消息的实现方法
       由于需要对WebSocket进行压力测试,因此又回归到了JMeter的使用。网络上缺少具体的获取多帧消息的操作,且自己也踩了两个坑,总结一下可行的操作供大家参考。 一、情况说明    被测试的WebSocket会根据客户端发起的信息进行回复,回复帧数不确定。现在需要把所有回复......
  • PHP是一种广泛应用于Web开发的编程语言
    PHP是一种广泛应用于Web开发的编程语言,它具有众多强大的特性和灵活的语法。在本文中,我们将深入探讨PHP的一些具体案例和例子,以帮助您更好地理解并应用它在实际项目中的强大功能。首先,让我们来看一个简单的实例,介绍PHP的核心概念之一:变量。在思密达梦三国PHP中,您可以使用$符号来......
  • web前端HTML中五种网页跳转的方法
    单自动跳转法对于表单大家都很熟悉,就是将表单中填写的内容,提交到action参数中指定的url地址中,目标url再对接收到的数据进行处理。利用这一点,我们可间接的实现网页跳转,只不过,我们并不需要提交任何表单内容。再结合javascript脚本,可以对表单进行自动提交。示例如下:cript>其中form1名......