Ort*_*kni 2 profile hibernate jpa maven spring-boot
我正在使用 Spring Boot/JPA/Hibernate。在服务器上部署时,我想在本地主机和 MySQL 上测试时使用 HSQLDB。
在 pom.xml 中,我对 MySQL 有这个依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
以及 HSQLDB 的这种依赖关系:
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
由于 Spring Boot 自动配置,我可能无法将两个依赖项都放在 pom.xml 中。但是我想在localSpring 配置文件处于活动状态时使用 HSQLDB,并在Spring 配置文件处于活动状态时使用 MySQL server。理想情况下,我只想生成一个 war 文件并使用该 war 文件运行本地版本mvn spring-boot:run并部署服务器版本。
任何的想法?
PS:我正在使用maven
由于 Spring Boot 自动配置,我可能无法将两个依赖项都放在 pom.xml 中。
当然你可以同时拥有它们。有几种解决方案。
最基本的一个是拥有两个依赖项,并application-server.properties使用 mysql 数据库的设置在您的项目中创建一个。当您在没有特定配置文件的情况下运行应用程序时,Spring Boot 将找不到任何连接到 MySQL 的信息,因此它将回退到 HSQL。在服务器上部署应用程序时,请确保启用server配置文件。相同的工件可用于两个用例。
您可以通过在生成胖 jar 时排除 hsql 依赖项来稍微改进该解决方案。这样做的好处是,如果您忘记启用配置文件,您将在启动时遇到异常,而不是默默地使用内存数据库。要排除 hsql,只需配置 maven 插件。您将无法在本地 ( mvn spring-boot:run) 或在您的 IDE 中运行该应用程序,并且胖 jar 将仅包含 mysql 依赖项。不过,您仍然必须启用server配置文件。
如果您正在使用战争,则不能使用最后一个解决方案:切换到 jar 的另一个原因;-)
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |