我有一个使用 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/