springcloud技术选型
由于springcloud管理的微服务架构众多,为了让自己不用在项目后期解决环境冲突问题,请严格按照官网给出的 boot 与cloud 对应关系进行选型。
springcloud官网
粗略对应关系图
以 Hoxton.SR12版为例,查看细粒度的版本对应关系
由官网可知,与Hoxton.SR12最为搭配的是 boot 2.3.12.REKEASE 版本
创建父工程
新建maven父工程 ,选择一个最简单的 site模板
创建完成后,删除src等目录,只留下pom文件
添加打包类型标签
<packaging>pom</packaging>
最终的pom文件
版本号严格按照技术选型的接过来
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.li</groupId>
<artifactId>springcloud-h</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.cloud-version>Hoxton.SR12</spring.cloud-version>
<spring.boot-version>2.3.12.RELEASE</spring.boot-version>
</properties>
<!--dependencyManagement 是只管理版本,不引入依赖
聚德版本号写在 properties 标签中
子module不用写 groupId 和 version
-->
<dependencyManagement>
<!--spring boot 主版本控制 2.3.12.RELEASE-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud 主版本管理 Hoxton.SR12 -->
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
聚合版本依赖,dependencyManagement 只声明依赖,并不实现引入,所以子项目还需要写要引入的依赖。如果不在子项目中声明依赖,是不会从服项目中继承下来的,且子项目中不明确版本号才会从父工程继承(version和scope)。后面如果需要添加需要管理的依赖,则分别在dependencyManagement标签和properties标签中补充即可。
好处: 不用每个子模块都写版本号, 且父工程中版本号 一处修改,处处生效。
如下这个依赖无论是父工程还是子工程都不要引入
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
子项目创建以及父工程依赖的引用
选择 new -> module->maven 不要选择任何模板
改pom
只需要在子项目的pom文件中添加父工程坐标版本即可
子模块中不用写 groupId 和 version,只需要写artifactId。
创建成功的子模块的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud-h</artifactId>
<groupId>com.li</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>euraka8002</artifactId>
</project>
引入springboot项目的一些依赖 如web依赖
直接增加一个对应标签即可,
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
子项目完整的pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud-h</artifactId>
<groupId>com.li</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>euraka8002</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
创建好的工程目录
这时候我们补充一个主启动类以及一个application配置文件
添加主启动类
package com.li;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Euraka8002Application {
public static void main(String[] args) {
SpringApplication.run(Euraka8002Application.class, args);
}
}
添加application配置文件
引入一个空文件即可 全部使用默认配置启动
子项目启动测试
启动成功,并且springboot的版本号成功从父类那儿继承过来