問題背景
最近在學習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的朋友有所幫助。