programing

org.springframework.cloud:spring-cloud-starter-eureka-server:jar에 대한 프로젝트 빌드 오류 'dependencies.dependency.version'이(가) 누락되었습니다.

linuxpc 2023. 6. 30. 22:09
반응형

org.springframework.cloud:spring-cloud-starter-eureka-server:jar에 대한 프로젝트 빌드 오류 'dependencies.dependency.version'이(가) 누락되었습니다.

저는 https://www.dineshonjava.com/microservices-with-spring-boot/ 에서 코드를 개발하고 있습니다.spring-boot-starter-parent를 업데이트할 때1.5.4.RELEASE2.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>

제 의견에 나타난 바와 같이 일부 시작자의 이름이 변경되었습니다. https://github.com/spring-projects/spring-cloud/wiki/Spring-Cloud-Edgware-Release-Notes

많은 선발 선수들이 일반적인 Spring Cloud 명명 규칙을 따르지 않았습니다.Edgeware에서 사용되지 않는 스타터를 사용하면 대신 사용할 새 스타터의 이름과 함께 경고가 기록됩니다.

변화: 변경사항:spring-cloud-starter-eureka-serverspring-cloud-starter-netflix-eureka-server.

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>

1.xml에서 종속성을 제거하고 파일을 저장합니다.

2º) STS project > 오른쪽 클릭 > Spring > Edit Starters > Eureka Discovery Client로 검색하여 checkbok > OK로 표시합니다.

이 조치로 저의 문제가 해결되었습니다.

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>

저 또한 비슷한 문제에 직면하고 있었습니다.아래의 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>

종속성을 추가할 때도 비슷한 오류가 발생했습니다.hystrix.

오류: org.springframework.cloud:spring-cloud-starter-hystrix:jar에 대한 프로젝트 빌드 오류 'dependencies.dependency.version'이(가) 없습니다.

<artifactId>

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

여기 몇 가지가 있습니다.저는 유레카 서버를 만들려다가 몇 가지 문제에 직면했습니다.

첫번째 것들

사중인경우를 .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 서버 종속성 버전이 올바른지 확인합니다.다음을 추가하여 확인할 수 있습니다.<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> properties 및 및속태 그성 및${spring-cloud.version} 태그는 다음과 .

<dependencyManagement>태그를 지정한 다음 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>

도움이 되길 바랍니다.

버전을 설정한 후:

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

오류가 사라졌습니다.아마도 생산을 위한 최상의 솔루션은 아닐 것입니다.

아래 글로벌 버전을 추가해 보십시오.

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

도움이 될 수도 있습니다.

위에서 언급한 문제 해결을 시도한 후에도 여전히 오류가 발생하는 모든 사람들을 위해, 그들은 pom.xml에 이 의존성 관리를 추가할 수 있으며, 그것은 작동할 것입니다.

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

위에 올려진 답변을 모두 시도해봤는데 하나도 작동하지 않습니다.제게 효과가 있었던 유일한 방탄 방법은 https://start.spring.io/ 에서 데모 프로젝트를 만들고 종속성 Eureka Discovery Client SPRING을 선택한 다음 데모 프로젝트의 pom.xml을 보고 현재 POM과 비교하는 것입니다.

start.spring.io 에서 생성된 demo pom.xml은 아래에 게시되어 있습니다. 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의 차이점을 포함하십시오.

저는 두 가지를 시도하여 해결책을 찾았고 둘 다 문제를 해결했습니다, 넷플릭스-eureka 서버 버전의 문제인 것 같습니다.

방법 1: 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

그러나 오류가 제거됩니다.

의존성 노드가 나에게 작동한 후 pom.xml에 이것을 추가합니다.

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

이것은 저에게 효과가 있었습니다. 저는 스타터 상위 버전을 3.0.0에서 2.7.3으로, 클라우드 버전을 2021.0.3으로 변경했습니다.

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

   <properties>
    <java.version>17</java.version>
    <spring-cloud.version>2021.0.3</spring-cloud.version>
</properties>

spring-cloud-dependencies를 추가한 후 해결되었으며 아래와 같이 넷플릭스 저장소가 pom.xml을 완료합니다.

4.0.0 org.스프링 프레임워크boot spring-boot-starter-parent 3.0.0 com.rh movie-catalog-service 0.0.1-SNAPshot movie 카탈로그 영화 카탈로그 서비스

<properties>
    <java.version>11</java.version>
    <spring-cloud.version>2022.0.0-RC2</spring-cloud.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-test</artifactId>
        <scope>test</scope>
    </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>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
<repositories>
    <repository>
        <id>netflix-candidates</id>
        <name>Netflix Candidates</name>
        <url>https://artifactory-oss.prod.netflix.net/artifactory/maven-oss-candidates</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

아무 것도 작동하지 않으면 메이븐 설정에 문제가 있습니다.메이븐 설정 확인:IntelliJ IDEA가 올바른 Maven 설치 및 설정을 사용하고 있는지 확인합니다."File" -> "Settings" -> "Build, Execution, Deployment" -> "Build Tools" -> "Maven"으로 이동합니다."Maven 홈 디렉토리"가 시스템에 Maven이 설치된 올바른 위치를 가리키는지 확인합니다.번들(Maven 3)로 변경합니다.그러면 문제가 사라질 것입니다.

저도 같은 실수를 했습니다.나의 pom like a low

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.0</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.thusitha</groupId>
<artifactId>department-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>department-service</name>
<description>Demo project for Spring Boot</description>
<properties>
    <java.version>17</java.version>
</properties>
<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </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>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

그래서 저는 이렇게 폼을 바꿔야 합니다.

<properties>
    <java.version>17</java.version>
    <!-- Add spring cloud verion --> 
    <spring-cloud.version>2022.0.3</spring-cloud.version>
</properties>
<dependencies>
</dependencies>
<!-- Add dependencyManagement --> 
<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>

dependencyManagement는 선언에 불과하며 실제로 종속성을 추가하지는 않습니다.

갱신하다


Hoxton.RC1


로.


그리니치의풀어주다

pom.xml로

언급URL : https://stackoverflow.com/questions/51921033/project-build-error-dependencies-dependency-version-for-org-springframework-c

반응형