Gradle Spring Boot自定义配置



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

我在网上读了很多关于这方面的文章,看起来渐变配置是可行的。我在这上面发现的最接近的是:

sourceSets {
qaci {
java {
srcDir 'src/qa/java'
}
compileClasspath += sourceSets.main.runtimeClasspath
compileClasspath += sourceSets.main.resources
}
}
configurations {
qaciCompile.extendsFrom compile
}
bootRepackage {
customConfiguration = myCustomConfig
}

不幸的是,bootRepackagebootJar所取代。我使用的是gradle spring引导插件2.0.1.RELEASE,当我尝试使用bootJar.customConfiguration时,我收到一个错误,说这是一个未知属性。

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

有人知道如何告诉gradle 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

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

将在您提供的本地路径中自动创建文件系统,以便您可以在重新启动/提供给qa时恢复数据。

-数据库文件的位置。如果需要从头开始重新创建,请删除此目录

mariaDB4j.dataDir=./data/local

默认值为3306,因此使用3307以防它已经在此机器上运行

mariaDB4j.port=3307
app.mariaDB4j.databaseName=app_alpha
spring.datasource.url=jdbc:mariadb://localhost:3307/
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

您可以参考此了解更多信息https://objectpartners.com/2017/06/19/using-mariadb4j-for-a-spring-boot-embedded-database/

最新更新