问题背景
最近在学习Spring Boot过程中通过eclipse创建了一个Maven工程,然后基于此Maven工程创建了一个子模块项目,及Maven Module项目,但是在Maven Module项目的pom.xml开头出现了Unkown error的红色小叉,如下图:
其中,父级Maven工程的pom.xml的内容如下:
<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.wongoing</groupId>
<artifactId>base-microserver</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>base-microserver</name>
<url>http://maven.apache.org</url>
<modules>
<module>base-eureka</module>
</modules>
<!-- 使用属性设置编译工具的版本和项目的编码方式 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
<maven-compiler.version>3.1</maven-compiler.version>
<maven-surefire.version>2.12.4</maven-surefire.version>
</properties>
<!-- 使用父级配置,设定Spring Boot和Spring Cloud的版本 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<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>
<!-- 配置starter -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 使用统一的插件配置,如果模块中没有相关的构建配置,将默认使用这个配置 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire.version}</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
子级Maven Module的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.wongoing</groupId>
<artifactId>base-microserver</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>base-eureka</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
问题分析
通过从网上查找相关问题发现,大部分这种Unkown Error问题主要是由于当前Maven的版本对依赖库的版本不支持导致的。还发现有些朋友直接在创建基于Maven的Spring Boot项目是就出现了这个问题,解决办法是把Spring Boot的版本降低一些。我现在的问题是在主Maven工程中的pom.xml中配置的spring boot依赖,但是在子模块的pom.xml中报错。虽然对这个解决思路持怀疑态度,但是也不妨一试。
问题解决
1、修改主Maven工程中pom.xml的spring boot版本2.1.5.RELEASE为2.1.4.RELEASE,并保存,等待工程编译结束。
2、鼠标右键Maven子模块项目,在弹出菜单中选择Maven->Update Project,等待更新结束。
经过这2部操作发现子模块的pom.xml中的Unkown error小红叉消失了,且子工程的小红叉也消失了,一切都正常了,如下图:
至此,这个问题完美解决,希望对使用eclipse开发spring boot的朋友有所帮助。