Ich habe eine Spring Boot-Anwendung mit zwei Profilen: 'dev' und 'prod'. In 'dev' Profil sollte H2-Datenbank verwendet werden, in 'prod' - PostgreSQL.Probleme beim Definieren von Profilen in pom.xml (Spring Boot)
Sie sind in pom.xml wie folgt definiert:
<profiles>
<profile>
<id>prod</id>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1211.jre7</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>dev</id>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
</dependencies>
</profile>
</profiles>
Keine anderen Datenbanken werden in pom.xml definiert.
In meinem application.properties Datei 'prod' Profil als aktiv definiert:
spring.profiles.active = prod
Auch ich habe zwei spezielle Eigenschaften Dateien für jedes Profil:
application-dev.properties:
spring.jpa.show-sql = true
und application-prod.properties (ich meine App AWS einsetzen):
spring.datasource.url = jdbc:postgresql://${RDS_HOSTNAME}:${RDS_PORT}/${RDS_DB_NAME}
spring.datasource.username = ${RDS_USERNAME}
spring.datasource.password = ${RDS_PASSWORD}
spring.jpa.hibernate.ddl-auto = update
Ich beginne meine IntelliJ IDEA mit folgenden VM-Option:
-Dspring.profiles.active="dev"
Wenn ich das Programm vor Ort zu starten, ich sehe, dass ‚dev‘ Profil verwendet wird (es gibt Meldung in der Konsole „Folgende Profile sind aktiv : dev "), aber H2 startet nicht. Ich werde folgende Fehlermeldung:
***************************
APPLICATION FAILED TO START
***************************
Description:
Cannot determine embedded database driver class for database type NONE
Action:
If you want an embedded database please put a supported one on the classpath.
If you have database settings to be loaded from a particular profile you may need
to active it (the profiles "dev" are currently active).
Bitte helfen Sie mir, diese Profile richtig zu definieren.
Es gibt die folgenden Fehler: java.lang.IllegalStateException: Kann nicht Treiberklasse laden: org.h2.Driver. Und in "org.h2.Driver" Teil 'h2.Driver' ist rot –
Können Sie versuchen, Ihr Projekt außerhalb IntelliJ laufen? Sieht wie ein Nebeneffekt aus. Welche SpringBoot Version verwendest du? – davidxxx
Ich verwende Spring Boot Version v1.4.1.RELEASE. Wie ich verstehe, fügt Maven einfach keine Datenbankabhängigkeit hinzu. –