一、idea+gradle搭建springcloud項目流程

說明:採用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文件夾就可以(推薦此方法)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章