java - Gradle Spring Boot 自定义配置

标签 java spring spring-boot gradle configuration

我有一个使用 mysql 数据库来保存信息的应用程序。我想创建此应用程序的一个版本,它使用嵌入式数据库 (mariaDB4j) 并将其作为服务添加到我们的 CI 环境中,因此当我们使用端到端启动此嵌入式版本时测试,QA 团队得到一个干净的数据库。

我在网上阅读了很多相关内容,看起来 gradle 配置是可行的方法。我发现最接近的是:

sourceSets {
    qaci {
        java {
            srcDir 'src/qa/java'
        }
        compileClasspath += sourceSets.main.runtimeClasspath
        compileClasspath += sourceSets.main.resources
    }
}

configurations {
    qaciCompile.extendsFrom compile
}

bootRepackage {
    customConfiguration = myCustomConfig
}

不幸的是,bootRepackage 被替换为 bootJar。我正在使用 gradle spring boot 插件 2.0.1.RELEASE,当我尝试使用 bootJar.customConfiguration 时,我收到一条错误消息,提示这是一个未知属性。

此外,mariaDB4j 需要一个配置类才能正常工作,我已将其包含在 src/qa/java 中并创建了一个新的源集以使其成为添加。

有谁知道如何告诉 gradle spring boot 插件使用自定义配置?

最佳答案

您是否考虑过使用 spring 配置文件?

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html

它将允许您为少数配置文件(即开发、QA、生产)定义一组不同的值、bean 或配置集,并且您可以使用它们来运行具有不同配置或不同库的应用。

@Configuration
@Profile("production")
public class ProductionConfiguration {}

此类将加载您在 .properties 或 .yml 文件中为该配置文件设置的所有值。

要运行应用程序,您可以传递要用作命令行参数的配置文件

--spring.profiles.active=dev

您的 mariaDB 的配置将在特定的配置文件下。

例如(如果您使用的是 yml ):

spring:
  profiles: QA
  datasource:
    url: jdbc:mariadb://qaserver:1234;databaseName=qaDatabase
    username: USER
    password: PASSWORD
    driverClassName: org.mariadb.jdbc.Driver
    //aditional mariadb properties, configs
spring:
  profiles: production
  datasource:
    url: jdbc:sqlserver://proddatabase:1433;databaseName=production
    username: USER
    password: PASSWORD
    driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver

属于其他配置文件的类和属性将不会被处理。

关于java - Gradle Spring Boot 自定义配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51372036/

相关文章:

java - 如何将选定的 Maven 配置文件传递到 Spring 配置文件?

java - 休息模板 HttpClientErrorException : 400 null on Post API

java - Tomcat 7 中部署的 Spring Boot WAR 尝试执行奇怪的自动 @Resource 查找

java - 如何在camel蓝图中引用 "disable"bean?

java - ScheduledThreadPoolExecutor scheduleWithFixedDelay 和 "urgent"执行

java - 为什么需要使用 'this' 关键字?

java - wsimport/xjc 命令行插件

java - JSF2 和 Spring AOP

Spring Boot异常处理最佳实践

java - 从另一个 jframe 添加节点到 jtree