說明:採用idea2019.3.1 gradle有可能會報錯,將idea升級到2019.3.4就好了
exception during working with external system: java.lang.AssertionError
at org.jetbrains.plugins.gradle.service.project.BaseGradleProjectResolverExtension.createModule(BaseGradleProjectResolverExtension.java:154)
......
一、創建根項目
1、先創建一個空的gradle項目
創建完成後
2、先看創建的gradle版本
3、在本地配置號gradle,將idea的gradle配置改爲本地
4、修改build.gradle,注意springcloud的版本需要和springboot版本對應,具體版本可百度,這裏提供一個連接https://www.cnblogs.com/zhuwenjoyce/p/10261079.html
如果不確定springboot版本,可以先創建一個springboot項目,看一下springboot版本然後修改爲idea自動創建的版本即可,springcloud根據springboot版本進行修改即可,注意如果不用java1.8也要修改
buildscript {
ext {
springBootVersion = '2.2.5.RELEASE'
springCloudVersion = 'Hoxton.SR1'
}
repositories {
mavenLocal()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
allprojects {
group 'com.qpf'
version '1.0-SNAPSHOT'
apply plugin: 'java'
// 指定JDK版本
sourceCompatibility = 1.8
targetCompatibility = 1.8
//指定編碼格式
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
repositories {
mavenLocal()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
}
}
subprojects {
//dependency-management 插件
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
imports {
//spring bom helps us to declare dependencies without specifying version numbers.
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}"
}
}
jar {
manifest.attributes provider: 'gradle'
}
}
5、添加.gitignore文件,根據需要自己修改內容即可,若idea中沒有該插件,自己添加一個,不往git上提交的可以忽略此步
三、創建子模塊
1、使用spingboot創建子模塊consul
一樣需要是gradle
此時gradle編譯報錯,先不用管
exception during working with external system: java.lang.AssertionError
....
2、檢查子模塊有沒有添加到settings.gradle中,若沒有手動添加
3、處理:將子模塊下的build.gradle文件中除了dependencies中的內容之外全部刪除,添加
apply plugin: 'org.springframework.boot'
最終
apply plugin: 'org.springframework.boot'
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
注意修改依賴爲:
implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery'
發現報錯,按照第五小步處理
4、刪除子模塊下多餘文件,只留下src文件夾和settings.gradle,圖片中build文件夾是編譯文件不用管
5、如果編譯出錯則
取消Offline Model,點擊gradle中的Toggle Offline Model,然後重新編譯
6、配置consul子模塊的配置文件,這裏我將 application.properties修改爲application.yml進行配置
server:
port: 8081
spring:
application:
name: demo-server
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: service-producer
7、windows啓動consul服務
8、啓動類上添加@EnableDiscoveryClient支持服務發現
啓動項目查看,若啓動項目有問題,查看windows是否啓動了consul,若沒有則可查看啓動consul方法:https://blog.csdn.net/weixin_41996632/article/details/105047732
9、創建class文件,文件中寫入註解,檢查jdk包是否能夠正常引入
四、 和模塊consul一樣創建zuul模塊
1、build.gradle
apply plugin: 'org.springframework.boot'
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
// 健康檢查依賴於此包
implementation 'org.springframework.boot:spring-boot-starter-actuator'
// Spring Cloud Consul 的支持
implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-ribbon'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-zuul'
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
2、application.yml
server:
port: 8082
spring:
application:
name: demo-zuul
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: service-producer
3、啓動類添加@EnableDiscoveryClient
4、settings.gradle添加include('demo-zuul')
5、刪除多餘的文件
最終啓動如下圖
consul服務查看如下
說明:刪除模塊時不要直接刪文件,需要從項目中移除然後刪除File->Project Structure...
然後刪除根項目settings.gradle中的include('eureka'),最後從項目中刪除子模塊文件即可
提示:若不想修改gradle本地文件編譯,則不用刪除子模塊中gradle文件夾就可以(推薦此方法)