为什么我必须手动为maven项目中的sql db定义驱动程序

时间:2018-03-19 13:23:04

标签: java postgresql maven spring-boot jdbc

我遇到了问题,当我设置maven项目时,我创建了springboot app,它连接到postgres db,所以我需要一个驱动程序,我已经用3种不同的方式在maven依赖项中指定了它:

  1. <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    
  2. <dependency> 
         <groupId>postgresql</groupId> 
         <artifactId>postgresql</artifactId> 
        <version>9.1-901-1.jdbc4</version> 
    </dependency> 
    
  3. <dependency> 
        <groupId>org.postgresql</groupId> 
        <artifactId>postgresql</artifactId> 
        <version>42.2.1</version> 
    </dependency> 
    
  4. 并且它们都没有工作,所以我必须通过转到项目 - &gt;来通过STS(eclipse)中的项目属性来指定它。属性 - &gt; java构建路径 - &gt;图书馆 - &gt;添加外部罐子 并设置在postgres jdcb jar文件之前下载的路径,虽然它已经在maven依赖项中指定,因为我在pom.xml中留下了第一个postgres依赖声明,所以现在驱动程序在Maven依赖项和参考库中定义,现在它正在工作,我不知道看不到错误:

      

    无法加载驱动程序类:org.postgresql.Driver

    但最重要的是我在我的其他电脑上下载了该项目,我没有手动指定驱动程序,maven完成了这项工作。有人知道那是怎么回事吗?

1 个答案:

答案 0 :(得分:0)

您使用的是SpringBoot maven插件吗?它应该将所有必需的jar添加到类路径中。你应该只需要postgres的这两个依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency> 
        <groupId>org.postgresql</groupId> 
        <artifactId>postgresql</artifactId> 
        <version>42.2.1</version> 
    </dependency> 
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

你可以在这里找到一个样本pom: https://spring.io/guides/gs/relational-data-access/