Konfigurowanie zależności Maven dla SQL Server

122

Tworzę portlet, w którym mam dostęp Hibernate do bazy danych SQL Server. Ustawiam dla niego zależności Maven i próbuję znaleźć łącznik SQL Server w taki sam sposób, w jaki wiem, że MySql ma to.

Wciąż moja wyszukiwarka Google podaje tylko MySQL, jeśli szukam łącznika SQL Server. Jaka jest właściwa wartość zależności Maven ?

mico
źródło
1
related: stackoverflow.com/q/1074869/521799
Lukas Eder

Odpowiedzi:

213

Pobierz plik JAR sterownika z linku dostarczonego przez Olafa i dodaj go do lokalnego repozytorium Maven za pomocą;

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

Następnie dodaj go do swojego projektu za pomocą;

<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
</dependency>
Stu.C
źródło
13
Uwagi do wydania dla wersji, do której odsyłają linki z odpowiedzi Olafa, mówią, że jest to „Microsoft JDBC Driver 4.0 for SQL Server”. Więc użyłbym "-Dversion = 4.0" w instalacji mvn.
George Armhold
2
Napotkałem problem: „brak POM w tym katalogu” Rozwiązanie tego problemu można znaleźć tutaj: stackoverflow.com/questions/16348459/ ...
Alan B. Dee
4
sourceforge jtds to twoja odpowiedź
Junchen Liu
1
Możesz pobrać jar tutaj: java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
Ismail Yavuz
Czy pobranie i dodanie go do lokalnego repozytorium maven nie doprowadziłoby do ścisłego powiązania z maszyną programistyczną, na której tworzysz aplikację? Mam na myśli to, że jeśli ten sam projekt zostanie zbudowany na innej maszynie, nie znajdzie słoika w lokalnym repozytorium. Czy nie byłoby dobrze dodać go do projektu, aby był dostępny w VCS?
Obaid Maroof
69

Odpowiedz na „nowy” i „fajny” Microsoft.

Tak, sterownik SQL Server jest teraz objęty licencją MIT na

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

Odpowiedź dla „starej” firmy Microsoft:

W moim przypadku użycia (testowanie integracji) wystarczyło użyć zakresu systemowego dla zależności sterownika JDBC jako takiej:

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

W ten sposób mogłem umieścić sterownik JDBC w lokalnej kontroli wersji. Nie ma potrzeby, aby każdy programista ręcznie konfigurował rzeczy we własnych repozytoriach.

Zainspirowałem się tą odpowiedzią na inne pytanie o przepełnienie stosu i tutaj również o tym pisałem na blogu .

Lukas Eder
źródło
Jeśli to możliwe, myślę, że lepiej załadować JAR do lokalnego repozytorium
Mavena
@mcoolive: Przeważnie jest zdecydowanie lepiej. Ale czasami po prostu łatwiej (i nadal jest to właściwe) wykonać szybką i brudną robotę.
Lukas Eder
Ta odpowiedź jest nieaktualna w porównaniu do zaktualizowanej odpowiedzi Touzery'ego.
Blessed Geek
1
@BlessedGeek: Cóż, zaktualizowałem moją odpowiedź jeszcze przed Touzery. W rzeczywistości odpowiedź Touzery'ego jest bardziej przestarzała, ponieważ nadal odnosi się do biblioteki z SourceForge. sourceforge !!
Lukas Eder
1
@MikhailFedorov: Moje rozwiązanie zadziałało dla mnie. Zapraszam do dodania własnej odpowiedzi (lub nawet pary pytanie / odpowiedź), która pokazuje, jak rozwiązać ten problem, byłoby świetne dla społeczności.
Lukas Eder
16

Jest też alternatywa: możesz użyć sterownika jTDS typu open source dla MS-SQL Server, który jest kompatybilny, chociaż nie został wyprodukowany przez Microsoft. W przypadku tego sterownika istnieje artefakt mavena, którego możesz użyć:

http://jtds.sourceforge.net/

Z http://mvnrepository.com/artifact/net.sourceforge.jtds/jtds :

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

AKTUALIZACJA listopad 2016, Microsoft opublikował teraz swój sterownik MSSQL JDBC na github, a teraz jest również dostępny na maven:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
Emmanuel Touzery
źródło
Dla Java 1.6: zgaduję, że wyższe wersje są dla 1.7 .. <dependency> <groupId> net.sourceforge.jtds </groupId> <artifactId> jtds </artifactId> <version> 1.2.4 </version> </ zależność>
Roshan Khandelwal
2
zauważ, że nie było żadnych wydań JTDS od 2013 roku, więc w dzisiejszych czasach może to być zła rada ...
Emmanuel Touzery
Kierowca jtds miał problemy z SSL w Java 8 (poprawione, ale nie wydany), więc włączony do sqljdbc4
Rychu
9

Myślę, że szukasz sterownika Microsoft SQL Server JDBC: http://msdn.microsoft.com/en-us/sqlserver/aa937724

Olaf
źródło
Tak, to jest ten. Chciałbym załadować go przez maven, więc tak naprawdę nie była to odpowiedź na moje pytanie. Tak więc, pierwsze podanie, które dostanie mój ptaszek za jego / jej odpowiedź!
mico
3
Wygląda na to, że istnieją pewne nieporozumienia między pracownikami Maven i Microsoft dotyczące licencjonowania i redystrybucji sterownika JDBC: blogs.msdn.com/b/jdbcteam/archive/2010/03/02/ ...
Olaf
3

Uważaj na powyższe odpowiedzi. sqljdbc4.jar nie jest rozpowszechniany w ramach licencji publicznej, dlatego trudno jest umieścić go w pliku jar do uruchomienia i dystrybucji. Zobacz moją odpowiedź poniżej, aby uzyskać więcej szczegółów i znacznie lepsze rozwiązanie. Twoje życie stanie się dużo łatwiejsze, tak jak moje, kiedy znajdę tę odpowiedź.

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

Nelda.techspiress
źródło
2

Nawet po zainstalowaniu jar sqlserver, mój maven próbował pobrać zależność z repozytorium maven. Wtedy dostarczyłem mojemu pom repozytorium mojej lokalnej maszyny i działa dobrze po tym ... może być pomocny dla kogoś.

    <repository>
        <id>local</id>
        <name>local</name>
        <url>file://C:/Users/mywindows/.m2/repository</url>
    </repository>
Ashish
źródło
1

Wygląda na to, że firma Microsoft opublikowała niektóre swoje sterowniki dla centrali:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
andrew-g-za
źródło