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 ?


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>

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


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 .


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>

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


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


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>


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>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.