【问题标题】:Setting up maven dependency for SQL Server为 SQL Server 设置 Maven 依赖项
【发布时间】:2011-10-20 00:31:24
【问题描述】:

我正在开发一个 portlet,我可以在其中对 SQL Server 数据库进行 Hibernate 访问。我为它设置了 ma​​ven 依赖项,并尝试以我知道 MySql 拥有它的相同方式找出 SQL Server 连接器。

如果我搜索 SQL Server 连接器,我的 Google 搜索仍然只提供 Mysql。什么是正确的 ma​​ven 依赖 值?

【问题讨论】:

标签: sql-server hibernate maven


【解决方案1】:

相信您正在寻找 Microsoft SQL Server JDBC 驱动程序:http://msdn.microsoft.com/en-us/sqlserver/aa937724

【讨论】:

  • 是的,就是这个。我想通过 Maven 加载它,所以这实际上并没有回答我的问题。所以,第一个给出答案的人会让我为他/她的回答打勾!
  • 在 JDBC 驱动程序的许可和重新分发方面,Maven 和 Microsoft 人员之间似乎存在一些分歧:blogs.msdn.com/b/jdbcteam/archive/2010/03/02/…
【解决方案2】:

从Olaf和add it to your local Maven repository提供的链接下载驱动JAR;

mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar

然后将其添加到您的项目中;

<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
</dependency>

【讨论】:

  • 从 Olaf 的回答中链接的版本的发行说明指出它是“Microsoft JDBC Driver 4.0 for SQL Server”。所以我会在 mvn 安装中使用“-Dversion=4.0”。
  • 我遇到了一个问题:“此目录中没有 POM” 可以在这里找到解决方案:stackoverflow.com/questions/16348459/…
  • sourceforge jtds 是你的答案
  • 你可以在这里下载jar:java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
  • 下载并将其添加到本地 maven 存储库不会导致与您正在构建应用程序的开发机器紧密耦合吗?我的意思是,如果尝试在不同的机器上构建相同的项目,它不会在本地 repo 中找到 jar。将其添加到项目中以便在 VCS 上可用不是很好吗?
【解决方案3】:

即使在安装了 sqlserver jar 之后,我的 maven 仍试图从 maven 存储库中获取依赖项。然后,我向我的 pom 提供了我本地机器的存储库,之后它就可以正常工作了……可能对某人有帮助。

    <repository>
        <id>local</id>
        <name>local</name>
        <url>file://C:/Users/mywindows/.m2/repository</url>
    </repository>

【讨论】:

    【解决方案4】:

    还有一个替代方案:您可以使用 MS-SQL Server 的开源 jTDS 驱动程序,虽然不是由 Microsoft 制造,但它是兼容的。 对于该驱动程序,您可以使用一个 Maven 工件:

    http://jtds.sourceforge.net/

    来自http://mvnrepository.com/artifact/net.sourceforge.jtds/jtds

    <dependency>
        <groupId>net.sourceforge.jtds</groupId>
        <artifactId>jtds</artifactId>
        <version>1.3.1</version>
    </dependency>
    

    更新 2016 年 11 月,微软现在发布了它的 MSSQL JDBC 驱动程序on github,它现在也可以在 maven 上使用:

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>6.1.0.jre8</version>
    </dependency>
    

    【讨论】:

    • 对于 Java 1.6:我猜更高版本是 1.7.. net.sourceforge.jtdsjtds1.2 .4
    • 请注意,自 2013 年以来没有发布过 JTDS,所以现在这可能是个坏建议......
    • jtds 驱动程序在 java 8 中存在 ssl 问题(已修补但未发布),因此我们切换到 sqljdbc4
    【解决方案5】:

    “新”和“酷”微软的答案。

    是的,SQL Server 驱动程序现在在 MIT 许可下

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>6.1.0.jre8</version>
    </dependency>
    

    “老”微软的答案:

    对于我的用例(集成测试)来说,为 JDBC 驱动程序的依赖项使用系统范围就足够了:

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>3.0</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/sqljdbc4.jar</systemPath>
        <optional>true</optional>
    </dependency>
    

    这样,我可以将 JDBC 驱动程序放入本地版本控制中。无需让每个开发人员在自己的存储库中手动设置内容。

    我的灵感来自this answer to another Stack Overflow questionI've also blogged about it here

    【讨论】:

    • 如果可能的话,我认为最好将JAR上传到本地maven存储库(Nexus)
    • @mcoolive:大多数情况下肯定更好。但有时,做一个快速而肮脏的工作更容易(而且仍然合适)。
    • 与 Touzery 的更新答案相比,此答案已过时。
    • @BlessedGeek:嗯,我什至在 Touzery 之前更新了我的答案。事实上,Touzery 的答案更加过时,因为它仍然引用了来自 sourceforge 的库。 sourceforge!!
    • @MikhailFedorov:我的解决方案对我有用。随意添加您自己的答案(甚至是一个问题/答案对)来展示如何解决这个问题,这对社区来说会很棒。
    【解决方案6】:

    请注意上面的答案。 sqljdbc4.jar 不是根据公共许可证分发的,这就是为什么很难将其包含在 jar 中以进行运行时和分发。有关更多详细信息和更好的解决方案,请参阅下面的答案。一旦我找到了这个答案,你的生活就会变得和我一样轻松。

    https://stackoverflow.com/a/30111956/3368958

    【讨论】:

      【解决方案7】:

      看起来微软已经向 maven Central 发布了一些驱动程序:

      <dependency>
          <groupId>com.microsoft.sqlserver</groupId>
          <artifactId>mssql-jdbc</artifactId>
          <version>6.1.0.jre8</version>
      </dependency>
      

      【讨论】:

        【解决方案8】:
        <dependency>
          <groupId>com.hynnet</groupId>
          <artifactId>sqljdbc4-chs</artifactId>
          <version>4.0.2206.100</version>
        </dependency>
        

        这对我有用(如果你使用 maven)

        https://search.maven.org/artifact/com.hynnet/sqljdbc4-chs/4.0.2206.100/jar

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-08
          • 1970-01-01
          相关资源
          最近更新 更多