Configuration de la dépendance maven pour SQL Server


122

Je développe un portlet sur lequel j'ai accès Hibernate à la base de données SQL Server. J'ai mis en place des dépendances maven pour cela et j'essaie de découvrir le connecteur SQL Server de la même manière que je sais que MySql l'a.

Toujours ma recherche Google ne donne que Mysql si je recherche le connecteur SQL Server. Quelle est la bonne valeur de dépendance maven ?


Réponses:


213

Téléchargez le pilote JAR à partir du lien fourni par Olaf et ajoutez-le à votre référentiel Maven local avec;

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

Ajoutez-le ensuite à votre projet avec;

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

13
Les notes de publication de la version liée à la réponse d'Olaf indiquent qu'il s'agit de «Microsoft JDBC Driver 4.0 pour SQL Server». J'utiliserais donc "-Dversion = 4.0" dans l'installation mvn.
George Armhold

2
J'ai rencontré un problème: "pas de POM dans ce répertoire" La solution à cela peut être trouvée ici: stackoverflow.com/questions/16348459/...
Alan B. Dee

4
sourceforge jtds est votre réponse
Junchen Liu

1
Vous pouvez télécharger le bocal ici: java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
Ismail Yavuz

Le télécharger et l'ajouter au référentiel maven local ne conduirait-il pas à un couplage étroit avec la machine de développement sur laquelle vous créez votre application? Je veux dire que si le même projet est essayé d'être construit sur une machine différente, il ne trouverait pas le pot dans le dépôt local. Ne serait-il pas bon de l'ajouter au projet pour qu'il soit disponible sur VCS?
Obaid Maroof

69

Réponse pour le "nouveau" et "cool" Microsoft.

Yay, pilote SQL Server maintenant sous licence MIT sur

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

Réponse pour le "vieux" Microsoft:

Pour mon cas d'utilisation (test d'intégration), il était suffisant d'utiliser une portée système pour la dépendance du pilote JDBC en tant que telle:

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

De cette façon, je pourrais mettre le pilote JDBC dans le contrôle de version local. Inutile de demander à chaque développeur de configurer manuellement des éléments dans ses propres référentiels.

Je me suis inspiré de cette réponse à une autre question de Stack Overflow et j'ai également blogué à ce sujet ici .


Si c'est possible, je pense qu'il est préférable de télécharger le JAR sur le référentiel maven local (Nexus)
mcoolive

@mcoolive: C'est certainement mieux, surtout. Mais parfois, il est juste plus facile (et toujours approprié) de faire un travail rapide et sale.
Lukas Eder

Cette réponse est obsolète par rapport à la réponse mise à jour de Touzery.
Blessed Geek

1
@BlessedGeek: Eh bien, j'ai mis à jour ma réponse avant même Touzery. En fait, la réponse de Touzery est plus obsolète, car elle fait toujours référence à une bibliothèque de sourceforge. sourceforge !!
Lukas Eder

1
@MikhailFedorov: Ma solution a fonctionné pour moi. N'hésitez pas à ajouter votre propre réponse (ou même une paire question / réponse) qui montre comment résoudre ce problème, ce serait formidable pour la communauté.
Lukas Eder

16

Il existe également une alternative: vous pouvez utiliser le pilote jTDS open-source pour MS-SQL Server, qui est compatible mais non fabriqué par Microsoft. Pour ce pilote, il existe un artefact maven que vous pouvez utiliser:

http://jtds.sourceforge.net/

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

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

MISE À JOUR novembre 2016, Microsoft a maintenant publié son pilote MSSQL JDBC sur github et il est également disponible sur maven maintenant:

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

Pour Java 1.6: je suppose que les versions supérieures sont pour 1.7 .. <dependency> <groupId> net.sourceforge.jtds </groupId> <artifactId> jtds </artifactId> <version> 1.2.4 </version> </ dependency>
Roshan Khandelwal

2
notez qu'il n'y a pas eu de sortie de JTDS depuis 2013 donc cela peut être un mauvais conseil de nos jours ...
Emmanuel Touzery

Le pilote jtds avait des problèmes avec ssl dans java 8 (patché mais pas publié), nous sommes donc passés à sqljdbc4
rychu


3

Soyez prudent avec les réponses ci-dessus. sqljdbc4.jar n'est pas distribué avec sous une licence publique, c'est pourquoi il est difficile de l'inclure dans un fichier jar pour l'exécution et la distribution. Voir ma réponse ci-dessous pour plus de détails et une bien meilleure solution. Votre vie deviendra beaucoup plus facile que la mienne une fois que j'aurai trouvé cette réponse.

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


2

Même après avoir installé le fichier jar sqlserver, mon maven essayait de récupérer la dépendance du référentiel maven. J'ai ensuite fourni à mon pom le référentiel de ma machine locale et cela fonctionne bien après cela ... pourrait être utile pour quelqu'un.

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


1

Il semble que Microsoft ait publié certains de ses pilotes sur maven central:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.