127 votes

Mise en place d'une dépendance maven pour SQL Server

Je développe un portlet dans lequel j'ai un accès Hibernate à la base de données SQL Server. J'ai configuré dépendances maven et essayer de trouver un connecteur SQL Server de la même manière que je sais que MySql l'a.

Ma recherche Google ne donne toujours que Mysql si je cherche un connecteur SQL Server. Quel est le bon dépendance maven valeur ?

1 votes

213voto

Stu.C Points 1258

Télécharger le JAR du pilote à partir du lien fourni par Olaf et l'ajouter à votre dépôt 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 votes

Les notes de mise à jour de la version liée à la réponse d'Olaf indiquent qu'il s'agit du "Microsoft JDBC Driver 4.0 for SQL Server". J'utiliserais donc "-Dversion=4.0" dans l'installation mvn.

2 votes

J'ai rencontré un problème : "no POM in this directory" La solution à ce problème se trouve ici : stackoverflow.com/questions/16348459/

4 votes

Sourceforge jtds est votre réponse

74voto

Lukas Eder Points 48046

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

Le pilote SQL Server est désormais sous licence MIT sur le site

Réponse pour le "vieux" Microsoft :

Pour mon cas d'utilisation (tests 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 sous contrôle de version local. Il n'est pas nécessaire que chaque développeur mette en place manuellement des éléments dans ses propres dépôts.

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

0 votes

Si c'est possible, je pense qu'il est préférable de télécharger le JAR sur le dépôt maven local (Nexus).

0 votes

@mcoolive : C'est certainement mieux, en grande partie. Mais parfois, il est tout simplement plus facile (et toujours approprié) de faire un travail rapide et sale.

0 votes

Cette réponse est dépassée par rapport à la réponse actualisée de Touzery.

17voto

Emmanuel Touzery Points 1677

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

http://jtds.sourceforge.net/

En 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 nov 2016, Microsoft a 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>

0 votes

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>

2 votes

Notez qu'il n'y a pas eu de versions du JTDS depuis 2013, donc cela pourrait être un mauvais conseil de nos jours...

0 votes

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

9voto

Olaf Points 4910

Je pense que vous recherchez le pilote JDBC de Microsoft SQL Server : http://msdn.microsoft.com/en-us/sqlserver/aa937724

0 votes

Oui, c'est celui-là. J'aimerais le charger via maven, donc ce n'était pas vraiment la réponse à ma question. Donc, le premier qui donne cette réponse aura ma coche pour sa réponse !

3 votes

Il semble qu'il y ait des désaccords entre Maven et Microsoft concernant la licence et la redistribution du pilote JDBC : blogs.msdn.com/b/jdbcteam/archive/2010/03/02/

2voto

Ashish Points 939

Même après avoir installé le jar sqlserver, mon maven essayait d'aller chercher la dépendance dans le dépôt maven. J'ai alors fourni à mon pom le dépôt de ma machine locale et cela fonctionne bien après cela... cela pourrait être utile à quelqu'un.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X