簡體   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