Java 使用spring引导配置文件和Gradle管理依赖项
我创建了一个java项目,它将使用SpringBoot和Gradle。我想为不同的环境配置配置文件(在我的本地机器上进行开发,在服务器场机器上进行集成测试的systemtest等)。我将在开发环境中使用h2内存数据库,在systemtest环境中使用SqlServer。在build.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
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')
}
}