我想爲使用Spring Boot和Maven的web應用程序配置多個部署環境。在src/main/resources/config下創建了幾個.properties文件。 db-dev.properties和db-prod.properties包括DB的具體信息:具有多環境配置的maven應用程序無法在tomcat上部署
db.url=jdbc:oracle:thin:@ldap://dev.com/risstg3,
db.username=owner
db.password=godzilla
在同一目錄中我也有application.properties其內容在這些數據庫屬性文件中定義的變量
#database info
spring.datasource.driverClassName=oracle.jdbc.OracleDriver
spring.datasource.url=${db.url}
spring.datasource.username=${db.username}
spring.datasource.password=${db.password}
#hibernate config
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
多個配置文件設置在我的POM:
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
<build>
<filters>
<filter>src/main/resources/config/db-${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources/config</directory>
<filtering>true</filtering>
</resource>
</resources>
所有其他的配置是由春啓動的照顧與@SpringBootApplicati在我的應用程序類的註釋。
然後,我通過使用-P選項指定配置文件來構建戰爭。 mvn install -Pprod
。但是我沒能與本地機上的tomcat部署由於以下錯誤:
SEVERE: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ristoreService]]
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
我想我設置在此基礎上thread與spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
在application.properties「hibernate.dialect」,這個錯誤可能不一定與Hibernate方言有關。如果數據庫連接不成功,您可能會看到它。我錯過了什麼?有沒有辦法判斷是否用正確的配置文件創建了戰爭,以及是否已經獲取了在db- {dev} .properties中定義的變量?
在你db-prod.properties文件中,你已經設置的默認屬性一起,嘗試在同一個文件與開發再次增加相同的屬性。和刺激。前綴。 像 'prod.db.url =的jdbc:神諭:薄:@ldap://dev.com/risstg3, prod.db.username =所有者 prod.db.password = godzilla' 接着,如果嘗試作品。 –
是否有任何理由不利用Spring的配置文件功能,因此您不必擔心執行maven過濾? –
@ShawnClark當我使用JVM參數'-Dspring.profiles.active = xxx'在Eclipse內部啓動應用程序以在環境之間切換時,我使用Spring活動配置文件進行了不同的設置,如果這是您所指的。但是,我需要把它打包成一場戰爭,沒有辦法讓不同的戰爭採取不同的JVM選項。看到我的其他[後](http://stackoverflow.com/questions/39081945/how-to-specify-spring-profiles-active-when-i-run-mvn-install) – ddd