前言

看过eureka很久,也在项目中用过,但是自己没有搭建过,这两天踩了好多坑。

结构

采用了主项目内继承springboot控制版本。内部添加cloud-eureka的可选依赖,为里面的模块添加依赖。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
        <relativePath /> <!-- lookup parent from repository -->
</parent>

····

<modules>
        <module>catnap-admin</module>
        <module>catnap-common</module>
    </modules>

    <properties>

        <spring-cloud.version>2020.0.3</spring-cloud.version>
        <netflix.version>3.0.3</netflix.version>
        <catnap.version>1.0.0</catnap.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.kqdesenlin.admin</groupId>
                <artifactId>catnap-admin</artifactId>
                <version>${catnap-version}</version>
            </dependency>
            <dependency>
                <groupId>com.kqdesenlin</groupId>
                <artifactId>catnap</artifactId>
                <version>1.0.0</version>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>

        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.2</version>
            </plugin>
        </plugins>
    </build>

 子模块继承父模块,然后内部添加eureka依赖。

    <parent>
        <artifactId>catnap</artifactId>
        <groupId>com.kqdesenlin</groupId>
        <version>1.0.0</version>
    </parent>

···

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>${netflix.version}</version>
 </dependency>

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.3</version>
            </plugin>
        </plugins>
    </build>

 

踩坑

1. 版本控制,版本控制是遇到的最大的问题,首先是springboot和springcloud的版本匹配,根据网上的教程访问该链接start.spring.io/actuator/info,可以查询springboot和cloud的版本。如图下:

在这里我们知道了对应关系,然后找版本,发现网上对springcloud版本都是代号来定义引用的

 

那么问题来了,这个2020.0.3是啥,经过一番寻找,我发现确实有一个版本,而且是最新版本是2020.0.3

现在知道了springboot的版本,springcloud的版本。

2. 是否需要添加version,在网上的教程中,例如https://blog.csdn.net/russle/article/details/80865830,里面讲到,如果添加了spring-cloud版本,就不需要给eureka的依赖添加版本,因为会自动配置,而我很苦逼的在这里搞了很久,因为我的eureka不会自动添加版本,所以有相同问题的,记得添加个版本号。

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>${netflix.version}</version>
        </dependency>

 

更多推荐