Добавить зависимость консула от существующего приложения весенней загрузки в Intellij - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь добавить «Обнаружение служб», используя консул в моем приложении Spring Boot (Maven), но не могу использовать @ EnableDiscoveryClient . Поскольку я новичок в Intellij, я не уверен, что мне не хватает.

Добавлен pom.

Я сделал следующее:

  1. Добавил зависимость от консула в моем пом. xml

enter image description here

Пытался повторно импортировать зависимости 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>
  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.2.6.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.mancala</groupId>
  <artifactId>MancalaFrontend</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>MancalaFrontend</name>
  <description>Front-end service for Mancala game.</description>

  <properties>
      <java.version>1.8</java.version>
      <vaadin.version>14.1.23</vaadin.version>
  </properties>

  <dependencies>
      <!-- Actuator -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>

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

      <!-- Consul  -->
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-consul-discovery</artifactId>
      </dependency>

      <!-- Vaadin -->
      <dependency>
          <groupId>com.vaadin</groupId>
          <artifactId>vaadin-spring-boot-starter</artifactId>
      </dependency>

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

  <!-- Vaadin Dependency Management-->
  <dependencyManagement>
      <dependencies>
          <dependency>
              <groupId>com.vaadin</groupId>
              <artifactId>vaadin-bom</artifactId>
              <version>${vaadin.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>

</project>

1 Ответ

1 голос
/ 06 апреля 2020

Вы не указали версию артефакта для spring-cloud-starter-consul-discovery.

ПРИМЕЧАНИЕ: вам не нужно было указывать версии для артефактов Spring Boot, потому что родительский pom имеет для них зависимость. Стартовый консул является частью Spring Cloud, и версией Spring Cloud необходимо управлять отдельно

. Есть 2 способа сделать это

  • напрямую в зависимости, через version tag
  • в теге dependencyManagement

Я рекомендую вам воспользоваться последним подходом, Spring предоставляет включение со всеми зависимостями Spring Cloud в совместимой версии. Для этого:

  • Добавьте <spring-cloud.version>Hoxton.SR3</spring-cloud.version> в <properties>
  • Добавьте следующее в dependencyManagement
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

Я сгенерировал pom с желаемой зависимостью от страницы Spring Initializr , выбирающей версию Spring Boot из pom для получения соответствующей версии Spring Cloud

...