问题
如果在刚开始学习SpringCloud的时候因为每个模块都得引入nacos等一些jar从而导致代码的重复度和对应的版本的问题,这边文章是我使用的时候发现的一些解决方法。
准备
我这边使用的是idea2022的但是不影响大概的使用
创建一个核心配置的pom.xml项目
这边就直接创建一个空的Maven项目就行,不一定要什么东西。
创建一个SpringBoot模块
这边可以直接使用Spring Initializr进行创建,名字可以随便制定,但是上面那个名字后面我们得用得到最好是在上面的空的Maven里面创建一定模块
核心配置
我们要设置一个父级pom.xml就像我们上面的那个第一个空的Maven一样,如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--重点-->
<groupId>com.example</groupId>
<artifactId>SpringCloudPlay</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--重点-->
<packaging>pom</packaging>
<modules>
<module>SpringBootPlay</module>
</modules>
<name>SpringCloudPlay</name>
<description>SpringCloudPlay</description>
<properties>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.13</version>
</parent>
<!--设置依赖-->
<dependencies>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
</dependency>
</dependencies>
</project>
依赖导入到模块
我这边就直接使用我的模块进行演示了,重点是父级的模块的(就是我上面画重点的哪里),下面就是导入的子类的pom.xml配置文件:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>SpringBootPlay</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SpringBootPlay</name>
<description>SpringBootPlay</description>
<!--重点-->
<parent>
<groupId>com.example</groupId>
<artifactId>SpringCloudPlay</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<!--重点-->
<properties>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<mainClass>com.example.springbootplay.SpringBootPlayApplication</mainClass>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
总结
就是先设置一个空的Maven然后在里面设置一个SpringBoot的模块,在子类的模块里的pom.xml里面设置一个parent标签来引入父级pom.xml然后我们就可以看到引入的状态了:
特别注意
一点注意SpringCloud父级pom.xml的版本依赖问题,要不然你运行都不行。