一、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文件夹就可以(推荐此方法)

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