Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用spring引导配置文件和Gradle管理依赖项_Java_Gradle_Spring Boot - Fatal编程技术网

Java 使用spring引导配置文件和Gradle管理依赖项

Java 使用spring引导配置文件和Gradle管理依赖项,java,gradle,spring-boot,Java,Gradle,Spring Boot,我创建了一个java项目,它将使用SpringBoot和Gradle。我想为不同的环境配置配置文件(在我的本地机器上进行开发,在服务器场机器上进行集成测试的systemtest等)。我将在开发环境中使用h2内存数据库,在systemtest环境中使用SqlServer。在build.gradle中,我定义了以下依赖项 dependencies { compile("org.springframework.boot:spring-boot-starter-data-jpa") co

我创建了一个java项目,它将使用SpringBoot和Gradle。我想为不同的环境配置配置文件(在我的本地机器上进行开发,在服务器场机器上进行集成测试的systemtest等)。我将在开发环境中使用h2内存数据库,在systemtest环境中使用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
这一次弹簧启动正确。我不太喜欢这个解决方案,因为我必须用Gradle部分地处理配置文件配置。我想知道是否有一种方法可以配置spring引导,使概要文件完全在自身内部管理,在开发环境中解析h2,在systemtest环境中解析sqlserver,让Gradle不知道spring概要文件


如何解决此问题?

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

明确指定
Spring.datasource.type
用于您正在使用的数据源实现的
systemtest
配置文件。这样就跳过了数据源检测(检测进行时,嵌入式具有优先权)。我试图查看Spring文档,但找不到可以分配给Spring.datasource.type的值。文件相当模糊。我试图设置一个数据源类,但它不起作用。你应该设置一个数据源类。。。类似于
com.zaxxer.hikari.HikariDataSource
java -Dspring.profiles.active=systemtest -jar <my uber jar>
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')
    }
}