ChatGPT解决这个技术问题 Extra ChatGPT

为 SQL Server 设置 Maven 依赖项

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

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


R
Renaud

从 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 上可用不是很好吗?
C
Community

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

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

GitHub:https://github.com/Microsoft/mssql-jdbc

Maven 中心:http://search.maven.org/#search%7Cga%7C1%7Cmssql-jdbc

<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 的库。源头!!
@MikhailFedorov:我的解决方案对我有用。随意添加您自己的答案(甚至是一个问题/答案对)来展示如何解决这个问题,这对社区来说非常有用。
E
Emmanuel Touzery

还有一个替代方案:您可以使用 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 月,Microsoft 现在发布了它的 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.jtds jtds 1.2.4
请注意,自 2013 年以来没有发布过 JTDS,所以现在这可能是个坏建议……
jtds 驱动程序在 java 8 中存在 ssl 问题(已修补但未发布),因此我们切换到 sqljdbc4
O
Olaf

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


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

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

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


A
Ashish

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

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

A
Akhil
<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


a
andrew-g-za

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

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