将 consul 依赖项添加到 Intellij 中现有的 spring 启动应用程序
Add a consul dependency to existing spring boot application in Intellij
我正在尝试在我的 Spring Boot (Maven) 应用程序中使用 consul 添加 "Service Discovery" 但无法使用 @EnableDiscoveryClient 。因为,我是 Intellij 的新手,我不确定我错过了什么。
添加了 pom。
我做了以下事情:
- 在我的 pom.xml
中添加了 consul 依赖项
尝试重新导入 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>
您没有为 spring-cloud-starter-consul-discovery
指定项目版本。
注意:您不必为 Spring 引导工件指定版本,因为父 pom 对它们有依赖性。 Consul starter 是 Spring Cloud 的一部分,Spring Cloud 版本需要单独管理
有两种方法可以做到
- 直接依赖,通过
version
标签
- 在
dependencyManagement
标签中
我鼓励您采用后一种方法,Spring 在兼容版本中提供了所有 Spring 云依赖项的包含。
要做到这一点:
- 在
<properties>
中添加<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
- 在
dependencyManagement
中添加以下内容
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
我在 Spring Initializr 页面上生成了具有所需依赖性的 pom,选择 Spring 从您的 pom 启动版本以获得匹配的 Spring 云版本
我正在尝试在我的 Spring Boot (Maven) 应用程序中使用 consul 添加 "Service Discovery" 但无法使用 @EnableDiscoveryClient 。因为,我是 Intellij 的新手,我不确定我错过了什么。
添加了 pom。
我做了以下事情:
- 在我的 pom.xml 中添加了 consul 依赖项
尝试重新导入 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>
您没有为 spring-cloud-starter-consul-discovery
指定项目版本。
注意:您不必为 Spring 引导工件指定版本,因为父 pom 对它们有依赖性。 Consul starter 是 Spring Cloud 的一部分,Spring Cloud 版本需要单独管理
有两种方法可以做到
- 直接依赖,通过
version
标签 - 在
dependencyManagement
标签中
我鼓励您采用后一种方法,Spring 在兼容版本中提供了所有 Spring 云依赖项的包含。 要做到这一点:
- 在
<properties>
中添加 - 在
dependencyManagement
中添加以下内容
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
我在 Spring Initializr 页面上生成了具有所需依赖性的 pom,选择 Spring 从您的 pom 启动版本以获得匹配的 Spring 云版本