如何确保只为某些配置文件加载/激活特定依赖项?

问题描述 投票:0回答:0

计划是为与 Cloud SQL Postgres 实例协同运行的生产环境创建一个

prod
配置文件。

为此我需要

spring-cloud-gcp-starter-sql-postgresql
依赖:

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
    <version>4.1.4</version>
</dependency>

问题:无论我尝试什么,这种依赖似乎都以某种方式注入到 Spring Boot 自动配置链中。

如果我在本地运行服务器,我会得到

Error creating bean with name 'com.google.cloud.spring.autoconfigure.firestore.GcpFirestoreAutoConfiguration': 
Unsatisfied dependency expressed through constructor parameter 1: 
No qualifying bean of type 'com.google.cloud.spring.core.GcpProjectIdProvider' available:
expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

如果我认为我可以通过为他的依赖选择不同的

<scope>
来解决这个问题,但我尝试过的任何东西都不起作用 - 除了
<scope>test</scope>
.

<dependencies>
    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
        <version>4.1.4</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<profiles>
    <profile>
        <id>dev</id>
        <dependencies>
            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
            </dependency>
        </dependencies>
    </profile>
</profiles>

不过,这当然也不是我想要的

我想做的就是声明

spring-cloud-gcp-starter-sql-postgresql
not以任何方式影响应用程序,除了某些配置文件,如
prod
,被激活。

我试过以下方法:

spring:
  cloud:
    gcp:
      core:
        enabled: false
      sql:
        enabled: false

但我仍然会遇到同样的异常。

有没有办法按照我想要的方式配置它,除了从根目录中删除依赖项?

maven spring-cloud spring-cloud-gcp
© www.soinside.com 2019 - 2024. All rights reserved.