MavenでSpringブートを使用してWebアプリケーションのマルチデプロイメント環境を設定しようとしています。 src/main/resources/configにいくつかの.propertiesファイルを作成しました。 db-dev.propertiesとdb-prod.propertiesはデシベル、特定の情報で構成されます。マルチ環境設定のmavenアプリケーションをtomcatにデプロイできない
db.url=jdbc:oracle:thin:@ldap://dev.com/risstg3,
db.username=owner
db.password=godzilla
これらのDBプロパティファイルで定義された変数を読み込み、私はまた、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
複数のプロファイルは、私のポンポンで設定されています
<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
。
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」を設定すると思った。しかし、私は次のエラーのため、ローカルマシン上のTomcatでそれを展開することができませんでした必ずしも冬眠中の方言と関係しているとは限りません。 db接続が成功しなかった場合は、これが表示されることがあります。私は何を取りこぼしたか? warが正しいプロファイルで作成されているかどうか、db- {dev} .propertiesに定義されている変数が選択されているかどうかを判断する方法はありますか?
、すでに設定されているデフォルトのプロパティと一緒に、DEVで再び同じファイル内の同じプロパティを追加してみてください。プロダクト。接頭辞。 '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