繁体   English   中英

使用Spring Boot Profile和Gradle管理依赖项

[英]Managing dependencies with spring boot profiles and Gradle

我创建了一个使用Spring Boot和Gradle的Java项目。 我想针对不同的环境(在本地计算机上进行开发,在服务器场计算机上进行集成测试的systemtest等)配置配置文件。 我将在内存数据库中将h2用于开发环境,将SqlServer用于系统测试环境。 在build.gradle中,我定义了以下依赖项

dependencies {
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("org.springframework.boot:spring-boot-starter-web-services")
    compile('org.springframework.boot:spring-boot-starter-actuator')
    runtime('com.h2database:h2:1.4.195')
    runtime('com.microsoft.sqlserver:mssql-jdbc')
}

我创建了一个application.yml文件,application-development.yml和application-systemtest.yml,在其中放置通用属性和特定于环境的属性。 文件application-systemtest.yml定义了sql server的连接参数

spring:
  datasource:
    url: jdbc:sqlserver://<host>,1433;databaseName=MYDB
    username: myuser
    password: mypass
    driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
  jpa:
    show-sql: true
    hibernate:
      dialect: org.hibernate.dialect.SQLServer2012Dialect

我还将创建一个uber-jar并选择配置文件作为启动参数,即

java -Dspring.profiles.active=systemtest -jar <my uber jar>

开发配置文件开始正常,我在内存数据库的h2上运行。 尝试使用systemtest配置文件时,spring boot无法加载上下文并且失败。 这是由于Spring Boot找到h2依赖项并尝试配置application-systemtest.yml中定义的数据源引起的

所以我修改了build.gradle依赖项关闭

def profile = project.findProperty('spring.profiles.active')

dependencies {
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("org.springframework.boot:spring-boot-starter-web-services")
    compile('org.springframework.boot:spring-boot-starter-actuator')
    if (profile == 'development') {
        runtime('com.h2database:h2:1.4.195')
    } else {
        runtime('com.microsoft.sqlserver:mssql-jdbc')
    }
}

这次弹簧靴正确启动。 我不太喜欢这个解决方案,因为我必须使用Gradle部分处理配置文件配置。 我想知道是否有一种配置spring boot的方法,以便在自己内部完全管理配置文件,从而解决了开发环境中的h2和systemtest环境中的sqlserver的问题,使Gradle不了解spring配置文件。

如何解决这个问题呢 ?

建议不要使用不同的工件/二进制文件,具体取决于数据库产品。 尝试按照@M的建议配置数据源/ Spring配置文件。 使用Deinum防止在使用其他DB时将数据源配置为H2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM