Configurar la dependencia de Maven para SQL Server

122

Estoy desarrollando un portlet donde tengo acceso de Hibernate a la base de datos de SQL Server. Configuré dependencias de Maven para él e intento encontrar el conector de SQL Server de la misma manera que sé que MySql lo tiene.

Aún así, mi búsqueda en Google solo proporciona Mysql si busco el conector de SQL Server. ¿Cuál es el valor de dependencia de Maven correcto ?

mico
fuente
1
relacionado: stackoverflow.com/q/1074869/521799
Lukas Eder

Respuestas:

213

Descargue el controlador JAR desde el enlace proporcionado por Olaf y agréguelo a su repositorio local de Maven con;

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

Luego agréguelo a su proyecto con;

<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
</dependency>
Stu.C
fuente
13
Las notas de la versión para la versión vinculada desde la respuesta de Olaf indican que es "Microsoft JDBC Driver 4.0 para SQL Server". Así que usaría "-Dversion = 4.0" en la instalación de mvn.
George Armhold
2
Me encontré con un problema: "no hay POM en este directorio" La solución a eso se puede encontrar aquí: stackoverflow.com/questions/16348459/…
Alan B. Dee
44
sourceforge jtds es su respuesta
Junchen Liu
1
Puede descargar el jar aquí: java2s.com/Code/Jar/s/Downloadsqljdbc420jar.htm
İsmail Yavuz
¿Descargarlo y agregarlo al repositorio local de Maven no llevaría a un acoplamiento estrecho con la máquina de desarrollo en la que está construyendo su aplicación? Quiero decir que si se intenta construir el mismo proyecto en una máquina diferente, no encontraría el jar en el repositorio local. ¿No sería bueno agregarlo al proyecto para que esté disponible en VCS?
Obaid Maroof
69

Responda para el "nuevo" y "genial" Microsoft.

Sí, el controlador de SQL Server ahora bajo licencia MIT en

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

Respuesta para el "viejo" Microsoft:

Para mi caso de uso (pruebas de integración) fue suficiente usar un alcance del sistema para la dependencia del controlador JDBC como tal:

<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 esa manera, podría poner el controlador JDBC en el control de versión local. No es necesario que cada desarrollador configure manualmente las cosas en sus propios repositorios.

Me inspiré en esta respuesta a otra pregunta de Stack Overflow y también he publicado un blog aquí .

Lukas Eder
fuente
Si es posible, creo que es mejor cargar el JAR en el repositorio local de Maven (Nexus)
mcoolive
@mcoolive: Definitivamente es mejor, principalmente. Pero a veces, es más fácil (y aún apropiado) hacer un trabajo rápido y sucio.
Lukas Eder
Esta respuesta está desactualizada en comparación con la respuesta actualizada de Touzery.
Beato Geek
1
@BlessedGeek: Bueno, actualicé mi respuesta incluso antes de Touzery. De hecho, la respuesta de Touzery está más desactualizada, porque todavía hace referencia a una biblioteca de sourceforge. sourceforge !!
Lukas Eder
1
@MikhailFedorov: Mi solución funcionó para mí. Siéntase libre de agregar su propia respuesta (o incluso un par de preguntas / respuestas) que muestre cómo resolver esto, sería genial para la comunidad.
Lukas Eder
16

También hay una alternativa: puede usar el controlador jTDS de código abierto para MS-SQL Server, que es compatible aunque no está hecho por Microsoft. Para ese controlador, hay un artefacto experto que puede usar:

http://jtds.sourceforge.net/

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

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

ACTUALIZACIÓN nov 2016, Microsoft ahora publicó su controlador JDBC MSSQL en github y ahora también está disponible en maven:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>
Emmanuel Touzery
fuente
Para Java 1.6: supongo que las versiones superiores son para 1.7 .. <dependency> <groupId> net.sourceforge.jtds </groupId> <artifactId> jtds </artifactId> <version> 1.2.4 </version> </ dependencia>
Roshan Khandelwal
2
tenga en cuenta que no hubo lanzamientos de JTDS desde 2013, por lo que puede ser un mal consejo hoy en día ...
Emmanuel Touzery
El controlador jtds tuvo problemas con ssl en java 8 (parcheado pero no lanzado), así que cambiamos a sqljdbc4
rychu
9

Creo que está buscando el controlador JDBC de Microsoft SQL Server: http://msdn.microsoft.com/en-us/sqlserver/aa937724

Olaf
fuente
Si, éste es. Me gustaría cargarlo a través de Maven, por lo que en realidad no fue la respuesta a mi pregunta. Entonces, ¡la primera donación que obtenga mi tic para su respuesta!
mico
3
Parece que hay algunos desacuerdos entre la gente de Maven y Microsoft con respecto a la licencia y la redistribución del controlador JDBC: blogs.msdn.com/b/jdbcteam/archive/2010/03/02/…
Olaf
3

Tenga cuidado con las respuestas anteriores. sqljdbc4.jar no se distribuye bajo una licencia pública, por lo que es difícil incluirlo en un jar para el tiempo de ejecución y la distribución. Vea mi respuesta a continuación para obtener más detalles y una solución mucho mejor. Tu vida será mucho más fácil como la mía una vez que encontré esta respuesta.

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

Nelda.techspiress
fuente
2

Incluso después de instalar el jar sqlserver, mi maven estaba tratando de obtener la dependencia del repositorio de maven. Luego, proporcioné a mi pom el repositorio de mi máquina local y funciona bien después de eso ... podría ser de ayuda para alguien.

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

Parece que Microsoft ha publicado algunos de sus controladores para Maven Central:

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