【问题标题】:Project build error: 'dependencies.dependency.version' for org.springframework.cloud:spring-cloud-starter-eureka-server:jar is missing项目构建错误:org.springframework.cloud:spring-cloud-starter-eureka-server:jar 的“dependencies.dependency.version”缺失
【发布时间】:2019-01-26 00:14:36
【问题描述】:

我正在开发来自https://www.dineshonjava.com/microservices-with-spring-boot/ 的代码。当我将 spring-boot-starter-parent 从 1.5.4.RELEASE 更新为 2.0.4.RELEASE 时,构建失败了。

谁能指导我这是什么问题?

项目构建错误:org.springframework.cloud:spring-cloud-starter-eureka-server:jar 的“dependencies.dependency.version”缺失。

另一个错误:

Multiple annotations found at this line:
    - For artifact {org.springframework.cloud:spring-cloud-starter-eureka-server:null:jar}: The version cannot be empty. (org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources:default-resources:process-
     resources) org.apache.maven.artifact.InvalidArtifactRTException: For artifact {org.springframework.cloud:spring-cloud-starter-eureka-server:null:jar}: The version cannot be empty. at 
     org.apache.maven.artifact.DefaultArtifact.validateIdentity(DefaultArtifact.java:148) at org.apache.maven.artifact.DefaultArtifact.<init>(DefaultArtifact.java:123) at 
     org.apache.maven.artifact.factory.DefaultArtifactFactory.createArtifact(DefaultArtifactFactory.java:157) at org.apache.maven.artifact.factory.DefaultArtifactFactory.createDependencyArtifact(DefaultArtifactFactory.java:
     57) at org.apache.maven.project.artifact.MavenMetadataSource.createDependencyArtifact(MavenMetadataSource.java:328) at 
     org.apache.maven.project.artifact.MavenMetadataSource.createArtifacts(MavenMetadataSource.java:503) at 

pom.xml

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

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>
        <!-- Eureka registration server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <!-- <version>Camden.SR5</version> -->
                <version>Finchley.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

【问题讨论】:

  • 依赖已重命名,现在包括 Netflix。
  • @Tim - 您能否发布更正后的 Maven 依赖项?我认为在 2.0.0.RELEASE 之后发生了重大变化

标签: spring spring-boot microservices


【解决方案1】:

正如我的评论中所指出的,一些初学者被重命名为:https://github.com/spring-projects/spring-cloud/wiki/Spring-Cloud-Edgware-Release-Notes

许多初学者没有遵循正常的 Spring Cloud 命名约定。在 Edgware 中,使用已弃用的 starter 将记录一条警告,其中包含要使用的新 starter 的名称。

所以改变: spring-cloud-starter-eureka-serverspring-cloud-starter-netflix-eureka-server

【讨论】:

  • 重命名后问题依旧。
  • 我已经在使用“spring-cloud-starter-netflix-eureka-server”,但还是有问题
【解决方案2】:
Add the following in to your pom.xml  

<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>Hoxton.RC1</spring-cloud.version>
</properties>

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

    OR

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

    <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>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>

【讨论】:

  • 它不适用于 spring-cloud-starter-netflix-hystrix
【解决方案3】:

即使我在为 hystrix 添加依赖项时也遇到了类似的错误。

错误:项目构建错误:'dependencies.dependency.version' org.springframework.cloud:spring-cloud-starter-hystrix:jar 丢失

更改 netflix &lt;artifactId&gt; 后它工作了

from: spring-cloud-starter-hystrix 
to:   spring-cloud-starter-netflix-hystrix

【讨论】:

  • 您好 Ravikumar,欢迎来到 StackOverflow。我已经删除了您的粗体字符格式,因为它过于激进,并且我在使用后置字符 ` 将文本放在灰色背景上时对您的问题进行了不同的格式化。我还使用了代码格式,以便立即比较 artifactId 中不正确的代码和正确的代码。您可以点击问题下方的edit 按钮查看我已经完成的操作。希望对您的下一篇文章有​​所帮助。
【解决方案4】:

更新


Hoxton.RC1



格林威治.RELEASE

*** 在 pom.xml 中

【讨论】:

  • 问题sn-p没有列出Hoxton.RC1
【解决方案5】:

我也面临类似的问题。使用下面的 pom.xml 有帮助

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>   

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    </dependency>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

</dependencies>
<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>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

【讨论】:

    【解决方案6】:

    在 Pom.xml 中添加以下内容

    <properties>
            <java.version>1.8</java.version>
             <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
     </properties>
    
    <dependencies>
    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-webflux</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
    
        </dependencies>
    
        <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>
    

    【讨论】:

      【解决方案7】:

      1º) 从你的 pom.xml 中移除依赖并保存文件;

      2º) 转到 STS 项目 > 右键单击​​ > Spring > Edit Starters > 搜索到 Eureka Discovery Client 并标记 checkbok > OK。

      这个动作解决了我的问题。

      【讨论】:

        【解决方案8】:

        这里有几件事。 我试图创建 Eureka 服务器,但遇到了一些问题。

        第一件事

        如果您使用的是spring-cloud-starter-eureka-server,请将其更改为spring-cloud-starter-netflix-eureka-server

        该链接将提供更改的详细信息。 https://github.com/spring-projects/spring-cloud/wiki/Spring-Cloud-Edgware-Release-Notes

        我最近从 https://start.spring.io/ 创建了启动项目,它在 pom.xml 中有最新的更改

        看起来是这样的

        <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>

        你需要确保eureka服务器依赖版本是正确的。 您可以通过在属性标签中添加&lt;spring-cloud.version&gt;Greenwich.RELEASE&lt;/spring-cloud.version&gt; 和在dependencyManagement 的版本标签中添加${spring-cloud.version} 来确保

        如果您没有看到 &lt;dependencyManagement&gt; 标记,则在您的 pom.xml 中添加整个依赖项

        <properties>
            <java.version>1.8</java.version>
             <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
         </properties>
        
        	<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>

        希望对你有帮助。

        【讨论】:

          【解决方案9】:

          设置版本后:

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

          错误消失了。可能不是生产的最佳解决方案。

          【讨论】:

            【解决方案10】:

            尝试添加以下全局版本,

            <properties>
                <java.version>11</java.version>
                <spring-cloud.version>2020.0.2</spring-cloud.version>
            </properties>
            

            那么没有版本标签的依赖如下,

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

            这可能会有所帮助。

            【讨论】:

              【解决方案11】:

              我尝试了上面发布的所有答案,但没有一个有效。唯一对我有用的防弹方法是在https://start.spring.io/ 创建一个演示项目并选择依赖项 Eureka Discovery Client SPRING,然后查看演示项目的 pom.xml 并与您当前的 POM 进行比较。

              从 start.spring.io 生成的演示 pom.xml 发布在下面,我已经包含了 cmets 以列出我在我的 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>
                    <parent>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-parent</artifactId>
                        <!-- Update the Spring version in current POM -->
                        <version>2.6.0</version>
                        <relativePath/> <!-- lookup parent from repository -->
                    </parent>
                    <groupId>com.example</groupId>
                    <artifactId>demo</artifactId>
                    <version>0.0.1-SNAPSHOT</version>
                    <name>demo</name>
                    <description>Demo project for Spring Boot</description>
                    <properties>
                        <java.version>11</java.version>
                        <!-- Missing, include this -->
                        <spring-cloud.version>2021.0.0-RC1</spring-cloud.version>
                    </properties>
                    <dependencies>
                        <!-- Missing, include this -->
                        <dependency>
                            <groupId>org.springframework.cloud</groupId>
                            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
                        </dependency>
                
                        <dependency>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-starter-test</artifactId>
                            <scope>test</scope>
                        </dependency>
                    </dependencies>
                    <!-- Missing, include this -->
                    <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>
                
                    <build>
                        <plugins>
                            <plugin>
                                <groupId>org.springframework.boot</groupId>
                                <artifactId>spring-boot-maven-plugin</artifactId>
                            </plugin>
                        </plugins>
                    </build>
                    <!-- Missing, include this -->
                    <repositories>
                        <repository>
                            <id>spring-milestones</id>
                            <name>Spring Milestones</name>
                            <url>https://repo.spring.io/milestone</url>
                            <snapshots>
                                <enabled>false</enabled>
                            </snapshots>
                        </repository>
                    </repositories>
                
                </project>
              

              请在您当前的 XML 中包含差异。

              【讨论】:

                【解决方案12】:

                我通过尝试两件事找到了解决方案,都解决了问题,我猜是netflix-eureka服务器版本的问题。

                方法一:只需使用 JDK 11。

                方法 2: 如果您使用的是 JDK 8。 然后用版本3.0.0添加这个版本标签,

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

                虽然这不是最佳做法 并会给出警告

                Overriding managed version 3.1.1 for spring-cloud-starter-netflix-eureka-server
                

                但是,它会消除错误。

                【讨论】:

                  猜你喜欢
                  • 2022-08-13
                  • 2020-06-08
                  • 1970-01-01
                  • 2020-12-20
                  • 2019-11-26
                  • 1970-01-01
                  • 2021-08-13
                  • 2019-01-07
                  • 2020-03-27
                  相关资源
                  最近更新 更多