Maven dependency - postgres to Oracle



到目前为止,我在本地主机上使用Postgres作为DB运行。一切都很好,我在pom.xml和以下配置中有这个依赖项(注意,我没有明确指定驱动程序(:

<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>

应用程序配置:

spring.datasource.url=jdbc:postgresql://*********
spring.datasource.username=********
spring.datasource.password=*********

一切顺利:

2020-10-31 13:47:03.078  INFO 28600 --- [         task-1] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL10Dialect
2020-10-31 13:47:04.037  INFO 28600 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8091 (http) with context path ''
2020-10-31 13:47:04.270  INFO 28600 --- [         task-1] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-10-31 13:47:04.283  INFO 28600 --- [         task-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-10-31 13:47:04.659  INFO 28600 --- [           main] DeferredRepositoryInitializationListener : Triggering deferred initialization of Spring Data repositories…
2020-10-31 13:47:04.915  INFO 28600 --- [           main] DeferredRepositoryInitializationListener : Spring Data repositories initialized!
2020-10-31 13:47:04.925  INFO 28600 --- [           main] c.a.u.f.FetcherserviceApplication        : Started FetcherserviceApplication in 8.87 seconds (JVM running for 10.334)

现在我想切换到oracleDB,所以我已经从pom.xml中删除了上面的postgresql依赖项,并为oracle添加了一个依赖项,另外还从我的配置中删除了postgres行,并添加了以下内容:

spring.datasource.url=jdbc:oracle:thin:@********
spring.datasource.username=********
spring.datasource.password=*********
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.jpa.datasbase-platform=org.hibernate.dialect.Oracle10gDialect
spring.jpa.hibernate.ddl-auto=update

现在,如果此时我尝试重新运行应用程序,我会发现Oracle驱动程序正在启动,但之后应用程序仍然无法启动,因为:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.    
2020-10-31 14:29:30.746 ERROR 6384 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   :    
***************************    
APPLICATION FAILED TO START    
***************************    
Description:    
Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource:    
Property: driver-class-name    
Value: org.postgresql.Driver    
Origin: "driverClassName" from property source "source"    
Reason: Failed to load driver class org.postgresql.Driver in either of HikariConfig class loader or Thread context classloader    
Action:    
Update your application's configuration

这是从哪里来的?我确实如上所述更新了配置,但更重要的是,当我从pom.xml中清除Postgres时,项目现在甚至不应该知道它曾经存在过。那么,它怎么可能存在问题呢?

关于Maven如何管理依赖关系,我想我仍然有一些不了解的地方。

谢谢!/安德拉斯

这是由于maven无法自动导入oracle依赖项。以下将帮助您解决问题

  1. 从pom.xml中删除PostgreSQL依赖项
  2. 然后将oracleJDBC依赖项添加到pom.xml

https://mvnrepository.com/artifact/com.oracle/ojdbc14

<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
  1. 下载oracle依赖项并手动安装到maven本地存储库

    mvn安装:安装文件-Dfile=";您下载的oracle jar文件位置"-DgroupId=com.oracle.ojdbc-DartifactId=";工件id"-Dversion=";下载版本号"-Dpackaging=罐

  2. 然后清理你的项目并运行。这似乎奏效了。

您应该使用最新的19.8 JDBC驱动程序。有关更多详细信息,请参阅本指南。此外,您还可以使用DataSourceSample.java来验证是否一切正常。

<dependencies>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8-production</artifactId>
<version>19.8.0.0</version>
<type>pom</type>
</dependency>
</dependencies>

最新更新