Настройка зависимости maven для SQL Server


122

Я разрабатываю портлет, в котором у меня есть доступ Hibernate к базе данных SQL Server. Я установил для него зависимости maven и пытаюсь найти соединитель SQL Server так же, как я знаю, что он есть в MySql.

Тем не менее, мой поиск в Google дает только Mysql, если я ищу коннектор SQL Server. Какое правильное значение зависимости maven ?


Ответы:


213

Загрузите драйвер JAR по ссылке, предоставленной Олафом, и добавьте его в локальный репозиторий Maven с помощью;

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>

13
В примечаниях к выпуску для версии, связанной с ответом Олафа, указано, что это «Microsoft JDBC Driver 4.0 для SQL Server». Поэтому я бы использовал "-Dversion = 4.0" в установке mvn.
Джордж Армхолд

2
Я столкнулся с проблемой: «в этом каталоге нет POM». Решение можно найти здесь: stackoverflow.com/questions/16348459/…
Алан Б. Ди

4
sourceforge jtds - ваш ответ
Цзюньчэн Лю

1
Вы можете скачать банку здесь: java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
Исмаил Явуз,

Не приведет ли его загрузка и добавление в локальный репозиторий maven к тесной связи с машиной разработки, на которой вы создаете свое приложение? Я имею в виду, что если тот же проект попытается построить на другой машине, он не найдет банку в локальном репо. Разве не было бы хорошо добавить его в проект, чтобы он был доступен в VCS?
Obaid Maroof 01

69

Ответ за «новый» и «крутой» Microsoft.

Ура, драйвер SQL Server теперь под лицензией MIT на

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

Ответ для "старого" Microsoft:

Для моего варианта использования (интеграционное тестирование) было достаточно использовать системную область видимости для зависимости драйвера 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 в локальный контроль версий. Нет необходимости заставлять каждого разработчика вручную настраивать данные в своих собственных репозиториях.

Я черпал вдохновение из этого ответа на другой вопрос о переполнении стека, и я также писал об этом здесь .


Если возможно, я думаю, что лучше загрузить JAR в локальный репозиторий maven (Nexus)
mcoolive

@mcoolive: В основном, это определенно лучше. Но иногда проще (и все же уместно) сделать быстро и грязно.
Лукас Эдер

Этот ответ устарел по сравнению с обновленным ответом Touzery.
Blessed Geek

1
@BlessedGeek: Ну, я обновил свой ответ еще до Touzery. Фактически, ответ Тузери более устарел, потому что он все еще ссылается на библиотеку из sourceforge. sourceforge !!
Лукас Эдер

1
@MikhailFedorov: Мое решение у меня сработало. Не стесняйтесь добавлять свой собственный ответ (или даже пару вопросов / ответов), который показывает, как решить эту проблему, было бы здорово для сообщества.
Лукас Эдер

16

Существует также альтернатива: вы можете использовать драйвер jTDS с открытым исходным кодом для MS-SQL Server, который совместим, хотя и не сделан 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, Microsoft теперь опубликовала свой драйвер MSSQL JDBC на github, и теперь он также доступен на maven:

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

Для Java 1.6: я предполагаю, что более высокие версии предназначены для 1.7 .. <dependency> <groupId> net.sourceforge.jtds </groupId> <artifactId> jtds </artifactId> <version> 1.2.4 </version> </ dependency>
Рошан Ханделвал

2
обратите внимание, что выпусков JTDS не было с 2013 года, так что в настоящее время это может быть плохой совет ...
Эммануэль Тузери

У драйвера jtds были проблемы с ssl в java 8 (исправлено, но не выпущено), поэтому мы перешли на sqljdbc4
rychu

9

Я считаю, что вы ищете драйвер JDBC для Microsoft SQL Server: http://msdn.microsoft.com/en-us/sqlserver/aa937724


Да, это тот самый. Я хотел бы загрузить его через maven, так что это не был ответ на мой вопрос. Итак, первый дающий получит мою галочку за его / ее ответ!
mico

3
Похоже, есть некоторые разногласия между Maven и людьми из Microsoft относительно лицензирования и распространения драйвера JDBC: blogs.msdn.com/b/jdbcteam/archive/2010/03/02/…
Олаф

3

Будьте осторожны с ответами выше. sqljdbc4.jar не распространяется под общедоступной лицензией, поэтому его сложно включить в jar для выполнения и распространения. См. Мой ответ ниже для получения более подробной информации и гораздо лучшего решения. Когда я найду этот ответ, твоя жизнь станет намного проще, чем моя.

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


2

Даже после установки jar-файла sqlserver мой maven пытался получить зависимость из репозитория maven. Затем я предоставил своему pom репозиторий моей локальной машины, и после этого он отлично работает ... может кому-то помочь.

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


1

Похоже, Microsoft опубликовала некоторые свои драйверы в maven central:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.