這是一個大膽的決定
技術(shù)棧
技術(shù) | 版本 |
---|---|
spring-boot | 3.0.2 |
spring-cloud | 2022.0.2 |
spring-cloud-alibaba | 2022.0.0.0-RC2 |
mybatis-plus-boot-starter | 3.5.3.1 |
mysql-connector-java | 8.0.32 |
開發(fā)工具
技術(shù) | 版本 |
---|---|
java | 17 |
gradle | 7.6.1 |
IDEA | 2022.2.4 |
Nvcat | 15 |
MySQL | 8.0.32 |
一、創(chuàng)建gradle父子項目(deity)
1.0 簡單流程示意
- 打開IDEA創(chuàng)建 SpringBoot項目
- 刪除父項目中的src模塊
- 新建兩個子項目(新建時會重新創(chuàng)建父項目src文件,刪除即可)
- 子項目:
mall-Ares
- 子項目:
mall-angel
- 子項目:
- 父
deity
build.gradle 配置全局配置 - 子
mall-Ares 和 mall-angel
build.gradle 負責(zé)引入依賴的jar
1.1、IDEA中主要圖示
1.1.1 項目結(jié)構(gòu)圖
1.1.2 IDEA中 Gradle配置
1.2、deity父項目build.gradle文件
//所有buildscript{}塊都必須出現(xiàn)在腳本中任何插件{}塊之前
buildscript{ //構(gòu)建gradle腳本自身需要的資源,可以聲明的資源包括依賴項、第三方插件、maven倉庫等等
//統(tǒng)一依賴版本管理
ext{
mysqlVersion = "8.0.32" //mysql
fastjsonVersion = "2.0.29" //fastjson
lombokVersion = '1.18.26' //lombok
springBootVersion= '3.0.2' //springBoot
springCloudVersion= '2022.0.2' //springCloud
springCloudAlibabaVersion='2022.0.0.0-RC2'//cloudAlibaba 2022.0.0.0-RC2
mybatisPlusVersion = '3.5.3.1' //mybatisPlus
}
//buildscript腳本構(gòu)建時需要去尋找的倉庫
repositories { //從前往后順序執(zhí)行,找不到就向后查找
// mavenLocal() //從maven本地倉庫下載jar到gradle倉庫
maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://maven.aliyun.com/repository/grails-core'}
maven { url 'https://maven.aliyun.com/repository/google/' }
maven { url 'https://maven.aliyun.com/repository/jcenter/' }
maven { url "https://mvn.getui.com/nexus/content/repositories/releases/" }
maven {
url 'http://mirrors.huaweicloud.com/repository/maven/'
allowInsecureProtocol = true
}
mavenCentral()
}
//構(gòu)建用到的插件
dependencies {
classpath 'io.spring.gradle:dependency-management-plugin:1.1.0'//maven方式插件
}
}
//插件要在最上邊初始化
plugins{
id 'org.springframework.boot' version '3.0.2'
id 'io.spring.dependency-management' version '1.1.0'//創(chuàng)建于 2022 年 10 月 18 日。 2023.05.08目前為最新版本
id 'idea'
}
//針對所有project的配置,包含根項目,除此之外還有subprojects 和 project,感興趣的童鞋可以自行百度查閱
allprojects{
apply plugin: 'java' //項目是java項目
apply plugin: 'idea' //項目是idea項目
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management' //類似于maven的版本管理方式
group = 'com.dage'
version = '0.0.1-SNAPSHOT'
//jdk版本
sourceCompatibility = '17'
targetCompatibility = '17'
//必須在插入 java插件后 執(zhí)行該命令
configurations {
compileJava{
extendsFrom annotationProcessor
}
}
//所有project項目的 jar獲取方式
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
options.deprecation = true
}
//全局配置時查找依賴的使用
repositories{ //從前往后順序執(zhí)行,找不到就向后查找
maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://maven.aliyun.com/repository/grails-core'}
maven { url 'https://maven.aliyun.com/repository/google/' }
maven { url 'https://maven.aliyun.com/repository/jcenter/' }
maven { url "https://mvn.getui.com/nexus/content/repositories/releases/" }
maven {
url 'http://mirrors.huaweicloud.com/repository/maven/'
allowInsecureProtocol = true
}
mavenCentral()
}
}
subprojects{// 子項目配置(可以理解為子模塊的全局配置)
sourceCompatibility = '17'
targetCompatibility = '17'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management' //類似于maven的版本管理方式
//子model統(tǒng)一jar引入
dependencies {
annotationProcessor 'org.projectlombok:lombok' //注釋處理器
implementation 'org.projectlombok:lombok'//引入lombok依賴
}
//提供類似 Maven 的依賴管理和排除的 Gradle 插件
//使用類似于maven的方式(io.spring.dependency-management) 統(tǒng)一版本管理
//https://docs.spring.io/dependency-management-plugin/docs/current/reference/html/#pom-generation 學(xué)習(xí)網(wǎng)址
//DSL 允許您使用:分隔的字符串來聲明依賴管理,以配置托管依賴的坐標
dependencyManagement {
dependencies{//統(tǒng)一版本管理
//DSL 允許您使用:分隔的字符串來聲明依賴管理,以配置托管依賴的坐標
dependency "mysql:mysql-connector-java:${mysqlVersion}"
dependency "org.projectlombok:lombok:${lombokVersion}"
dependency "com.baomidou:mybatis-plus-boot-starter:${mybatisPlusVersion}"
dependency "com.baomidou:mybatis-plus-generator:${mybatisPlusVersion}"
dependency "org.springframework.boot:spring-boot-starter-web:${springBootVersion}"
dependency "org.apache.velocity:velocity-engine-core:${velocityVersion}"
}
imports {
//引入 spring-cloud統(tǒng)一包管理
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
//引入 spring-cloud-alibaba統(tǒng)一包管理
mavenBom "com.alibaba.cloud:spring-cloud-alibaba-dependencies:${springCloudAlibabaVersion}"
//引入 spring-boot統(tǒng)一包管理
mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}"
}
}
}
//禁止根項目一切行為(不影響模塊)
//禁用以后執(zhí)行build的時候不會構(gòu)建parent項目
tasks.forEach {
it.enabled = false
}
/**
* Gradle打標準jar包
* 根項目需禁用springboot插件,否則會構(gòu)建失敗
* 光禁用BootJar是不行的,還要啟用Jar。
* GroovyDSL的寫法,對KotlinDSL無效
*/
bootJar{enabled = false}
jar{enabled=true}
/** KotlinDSL寫法
* tasks.bootJar {enabled = false}
* tasks.jar {enabled = true}
*/
tasks.named('test') {
useJUnitPlatform()
}
1.3、deity父項目settings.gradle文件
注意這里,子項目是沒有settings.gradle文件的。全局只有一個settings.gradle文件
pluginManagement {
repositories {
// mavenLocal() //從maven本地倉庫下載jar到gradle倉庫 【兩者】
maven { url 'https://maven.aliyun.com/repository/public/' }
// 新增
maven {url 'https://maven.aliyun.com/repository/grails-core'}
maven { url 'https://maven.aliyun.com/repository/google/' }
maven { url 'https://maven.aliyun.com/repository/jcenter/' }
maven { url "https://mvn.getui.com/nexus/content/repositories/releases/" }
maven {
url 'http://mirrors.huaweicloud.com/repository/maven/'
allowInsecureProtocol = true
}
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
mavenCentral() //maven中央倉庫
gradlePluginPortal()
}
}
rootProject.name = 'deity'
include 'mall-Ares'
include 'mall-angel'
此時我們在看
settings.gradle
文件,就會發(fā)現(xiàn),已經(jīng)自動生成了子模塊引入目錄
1.4、子項目build.gradle
mall-Ares 和 mall-angel
兩個子項目
這里注意,子項目只需要這么多配置參數(shù),如果需要其他jar繼續(xù)在
dependencies {}
中引入即可。(所有子項目配置均一致)
//子項目需要的jar包
dependencies {
//SpringBoot啟動項引入
implementation 'org.springframework.boot:spring-boot-starter-web'
}
// 動態(tài)移除對kotlin構(gòu)建插件的權(quán)限,避免子模塊構(gòu)建報錯
tasks.register("prepareKotlinBuildScriptModel") {}
1.5、子項目中的 application.yml 配置
1.5.1、mall-Ares
application.yml
server:
port: 8082
1.5.2、mall-angel
application.yml
server:
port: 8083
1.6、測試Controller
1.6.1、mall-Ares
測試代碼
package com.dage.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("test/")
public class TestController {
@RequestMapping("one")
public String one(){
return "歡迎來到j(luò)ava17";
}
}
1.6.2、mall-angel
測試代碼
package com.dage.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("test/")
public class TestController {
@RequestMapping("one")
public String one(){
return "歡迎來到gradle7.6.1";
}
}
1.7、測試是否啟動
二、創(chuàng)建gitee倉庫,推送到遠端
2.1、登錄gitee新建倉庫(deity)
倉庫名稱要項目名稱一致,這里倉庫名稱為:
deity
2.1.1、得到如下命令(新建倉庫,使用創(chuàng)建git倉庫
即可)
簡易的命令行入門教程:
Git 全局設(shè)置:
git config --global user.name "xxx"
git config --global user.email "xxxx@126.com"
創(chuàng)建 git 倉庫:
mkdir gods
cd gods
git init
touch README.md
git add.
git commit -m "first commit"
git remote add origin https://gitee.com/xxxxxxxx/gods.git
git push -u origin "master"
已有倉庫?
cd existing_git_repo
git remote add origin https://gitee.com/xxxxxxx/gods.git
git push -u origin "master"
這里是需要 使用 git的,需要自己去安裝,這里不做闡述
這里使用 git add. 把所有文件添加到暫存區(qū)
2.2、git執(zhí)行命令
在項目根目錄下執(zhí)行命令
這里記得吧xxxxx
更換為自己的地址
- 打開git,進入項目文件中
-
git init
初始化git -
touch README.md
創(chuàng)建版本文件 -
git status
查看當(dāng)前工作區(qū)文件狀態(tài) -
git add .
上傳所有文件到 暫存區(qū) -
git commit -m " 提交注釋"
提交文件到本地倉庫 -
git remote add origin https://gitee.com/xxxxxxxx/gods.git
添加遠程倉庫origin
,建立關(guān)聯(lián) -
git push -u origin "master"
把當(dāng)前分支master
推送到遠程倉庫origin
2.2.1、IDEA中可以驗證代碼是否上傳倉庫成功
2.2.2、在gitee倉庫中查看代碼是否上傳成功
2.3、git 常用知識淺談
PS:圖片來源
workspace:工作區(qū),平時存放代碼的位置 staging
area:暫存區(qū)/緩存區(qū),用于臨時存放你的改動,事實上它只是一個文件,保存即將提交到文件列表信息 local
repository:本地倉庫,就是安全存放數(shù)據(jù)的位置,這里面有你提交到所有版本的數(shù)據(jù)。其中HEAD指向最新放入倉庫的版本 remote
repository:遠程倉庫,托管代碼的服務(wù)器
代碼從修改到提交到遠程倉庫,一般需要經(jīng)歷如下5個狀態(tài):未修改,已修改,已暫存,已提交,已推送。如下所示:
未修改
原始內(nèi)容
已修改 ↓
工 作 區(qū)
已暫存 ↓ git add
暫 存 區(qū)
已提交 ↓ git commit
本地倉庫
已推送 ↓ git push
遠程倉庫
注意事項
git init會在項目根目錄下初始化一個.git目錄,git倉庫必須
remote只需執(zhí)行一次,yourRepository.git是你在github已有的一個倉庫
.gitignore,這個文件寫入所有不需要加入版本管理的文件,尤其像node_modules
三、Nacos 服務(wù)注冊 SpringCloud Alibaba
3.1、啟動win下的單機nacos
我這里是安裝的: NACOS 2.2.2
-
第一步:下載nacos到本地之后,打開文件至bin目錄,輸入cmd進入命令窗口
-
第二步:輸入啟動命令: startup.cmd -m standalone 可以看到啟動成功
Linux/Unix/Mac:命令
startup.sh -m standalone
? Windows:命令
startup.cmd -m standalone
- 第三步:啟動成功后,瀏覽器打開網(wǎng)址:http://localhost:8848/nacos/
- 默認nacos/nacos,成功查看(單機不需要登錄)
3.2、給項目創(chuàng)建一個命名空間
PS: 這里 命名空間ID
要著重記憶
3.3、引入新的需要的依賴
這里要在兩個子項目中的
dependencies{}
中添加如下依賴
這是一種 基于 maven方式的 gradle插件在管理依賴,如果需要,請?zhí)D(zhuǎn)目錄:1.2
// SpringCloud Alibaba nacos服務(wù)發(fā)現(xiàn)
implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery') {
exclude group: 'org.springframework.cloud', module: 'spring-cloud-starter-netflix-ribbon'
}
//用于簡化配置管理和外部化配置
//可以從遠程配置服務(wù)器(如 Git 存儲庫)中獲取應(yīng)用程序的配置信息,然后將這些配置信息注入到應(yīng)用程序中
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
3.3.1 子項目依賴更新圖
3.4、 啟動類添加 @EnableDiscoveryClient 注解
@EnableDiscoveryClient
是 Spring Cloud 的一個注解,用于啟用服務(wù)發(fā)現(xiàn)功能
package com.dage;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class AresSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(AresSpringBootApplication.class,args);
}
}
3.5 、創(chuàng)建bootstrap.yml進行配置
這里因為我有兩個子項目,便于理解,我貼出了兩個配置
這里的命名空間ID
就是 目錄 3.2中需要注意的內(nèi)容
這里要注意的一點是:application.yml中的server.port 配置我拿到了 bootstrap.yml中
所以現(xiàn)在 application.yml是空的。
server:
port: 8082
spring:
application:
name: mall-Ares
cloud:
nacos:
discovery:
server-addr: localhost:8848
enabled: true
namespace: deity88481314 #命名空間ID
server:
port: 8083
spring:
application:
name: mall-angel
cloud:
nacos:
discovery:
server-addr: localhost:8848
enabled: true
namespace: deity88481314 #命名空間ID
3.6、在nacos管理平臺中查看注冊進入的服務(wù)
文章來源:http://www.zghlxwxcb.cn/news/detail-456089.html
測試完成文章來源地址http://www.zghlxwxcb.cn/news/detail-456089.html
到了這里,關(guān)于使用Gradle7.6.1 + SpringBoot3.0.2 + java17創(chuàng)建微服務(wù)項目(學(xué)習(xí))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!