首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用spring boot配置文件和Gradle管理依赖项

使用spring boot配置文件和Gradle管理依赖项
EN

Stack Overflow用户
提问于 2017-05-02 17:32:38
回答 1查看 2K关注 0票数 2

我创建了一个java项目,它将使用spring boot和Gradle。我想为不同的环境配置配置文件(在我的本地机器上开发,在服务器群机器上进行集成测试的systemtest等)。我会使用内存数据库中的h2作为开发环境,SqlServer作为系统测试环境。在build.gradle中,我定义了以下依赖项

代码语言:javascript
运行
复制
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的连接参数。

代码语言:javascript
运行
复制
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,并选择配置文件作为启动参数,即

代码语言:javascript
运行
复制
java -Dspring.profiles.active=systemtest -jar <my uber jar>

开发配置文件启动良好,我在内存数据库中的h2上运行。当尝试systemtest配置文件时,spring boot无法加载上下文并且失败。这是由spring boot查找应用程序依赖项并尝试配置在h2 -systemtest.yml中定义的数据源引起的

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

代码语言:javascript
运行
复制
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,在系统测试环境中解析sqlserver,让Gradle不知道spring配置文件。

如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2017-05-02 22:29:21

根据DB产品的不同,不建议使用不同的工件/二进制文件。尝试按照@M.Deimum的建议配置数据源/ Spring配置文件,以防止在使用不同的DB时将数据源配置为H2。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43734533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档