侧边栏壁纸
博主头像
DOKI SEKAI博主等级

行动起来,活在当下

  • 累计撰写 114 篇文章
  • 累计创建 38 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

在Spring Boot项目中使用Gradle配置和管理Nacos命名空间

君
2024-07-19 / 0 评论 / 0 点赞 / 42 阅读 / 4459 字

在Spring Boot项目中使用Gradle配置和管理Nacos命名空间


概述

本项目使用Gradle构建工具,通过设置不同环境的命名空间来配置和启动Spring Boot应用。此文档详细描述了如何配置环境、启动项目以及各个核心部分的功能和作用。


环境配置

我们通过在 gradle.properties文件中设置不同环境的Nacos命名空间,并在 build.gradle中读取这些配置来实现环境管理。

gradle.properties
nacosNamespaceDev=dev-namespace-id
nacosNamespaceTest=test-namespace-id
nacosNamespaceProd=prod-namespace-id

build.gradle配置

build.gradle文件包含了环境配置、依赖管理和任务定义。

//关注下面的内容
def configureEnv(String env) {
    def nacosNamespace = project.findProperty("nacosNamespace${env.capitalize()}") ?: ""
    if (nacosNamespace.isEmpty()) {
        throw new GradleException("Nacos namespace for ${env} is not set. Please check gradle.properties.")
    }
    project.ext.env = env
    project.ext.nacosNamespace = nacosNamespace
    println "Configuring environment: ${env}, Nacos namespace: ${nacosNamespace}"
}

task runDev {
    doFirst {
        configureEnv('dev')
    }
    finalizedBy 'bootRun'
}

task runTest {
    doFirst {
        configureEnv('test')
    }
    finalizedBy 'bootRun'
}

task runProd {
    doFirst {
        configureEnv('prod')
    }
    finalizedBy 'bootRun'
}

bootRun {
    doFirst {
        if (!project.ext.has('nacosNamespace')) {
            throw new GradleException("Nacos namespace is not set. Please run runDev, runTest, or runProd first.")
        }
        systemProperty 'nacosNamespace', project.ext.nacosNamespace
    }
}

任务说明

  • configureEnv:配置环境,读取 gradle.properties中的Nacos命名空间,并将其设置为项目的扩展属性。
  • runDevrunTestrunProd:分别配置开发、测试和生产环境,并启动Spring Boot应用。
  • bootRun:检查是否已设置Nacos命名空间,然后启动Spring Boot应用。

Spring Boot配置

application.yml文件中通过占位符引用Gradle中设置的环境变量。

spring:
  config:
    import: optional:nacos:file-service.yml
  application:
    name: file-service
  cloud:
    nacos:
      discovery:
        username: nacos
        password: 123456
        server-addr: 10.8.0.1:8848
        namespace: ${nacosNamespace}
      config:
        server-addr: 10.8.0.1:8848
        namespace: ${nacosNamespace}
        file-extension: yml
        username: nacos
        password: 123456
  r2dbc:
    url: r2dbc:mysql://127.0.0.1:3306/file_service
    username: root
    password: 123456

启动命令

使用以下命令启动不同环境的项目:

  • 启动开发环境:

    ./gradlew runDev
    
  • 启动测试环境:

    ./gradlew runTest
    
  • 启动生产环境:

    ./gradlew runProd
    

运行逻辑

  1. 执行如 ./gradlew runDev命令。
  2. runDev任务调用 configureEnv('dev')方法,设置环境变量。
  3. bootRun任务在执行前检查 nacosNamespace是否设置,并将其传递给Spring Boot应用。
  4. Spring Boot应用根据 application.yml中的配置读取并使用传递的 nacosNamespace

这样,通过动态设置和传递环境变量,可以灵活地在不同环境中启动项目,并确保每个环境使用正确的配置。

0

评论区