Artefacto perdido com.microsoft.sqlserver: sqljdbc4: jar: 4.0

Estoy tratando de agregar la dependencia del controlador MS SQL en mi archivo POM.xml y la siguiente es la dependencia.

 com.microsoft.sqlserver sqljdbc4 4.0  

pero obtengo esta excepción

Artefacto perdido com.microsoft.sqlserver: sqljdbc4: jar: 4.0

Realmente no entiendo el problema.

ACTUALIZAR

Microsoft ahora proporciona este artefacto en maven central. Consulte la respuesta de @nirmal para obtener más detalles: https://stackoverflow.com/a/41149866/1570834


RESPUESTA ORIGINAL

El problema es que Maven no puede encontrar este artefacto en ninguno de los repositorys maven configurados.

Lamentablemente, Microsoft no pone este artefacto disponible en ningún repository de maven. Debe descargar el jar del sitio web de Microsoft y luego instalarlo manualmente en su repository local de maven.

Puedes hacer esto con el siguiente comando maven:

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

Luego, la próxima vez que ejecutes maven en tu POM, encontrarás el artefacto.

Microsoft abrió recientemente el origen de su controlador jdbc .

Ahora puede encontrar el controlador en maven central:

   com.microsoft.sqlserver mssql-jdbc 6.1.0.jre8  

o para java 7:

   com.microsoft.sqlserver mssql-jdbc 6.1.0.jre7  

Tuve el problema similar y lo resolví haciendo follow.

  • Descargue sqljdbc4.jar del sitio web de Microsoft en su máquina local.
  • Haga clic derecho en Proyecto -> Importar -> Maven -> Instalar o desplegar un artefacto en un repository Maven como se muestra a continuación.

enter image description here

* Siguiente -> Completa los siguientes detalles

Artifact file: ruta del Artifact file: jar que descargó (por ejemplo, E: \ lib \ sqljdbc4.jar en mi caso)
Group Id: com.microsoft.sqlserver
Artifact Id: sqljdbc4
Version: 4.0

enter image description here

  • A continuación, actualice / limpie el proyecto.

    ¡Gracias!

La respuesta anterior solo agrega el archivo sqljdbc4.jar al repository local . Como resultado, al crear el jar del proyecto final para distribución, sqljdbc4 faltará de nuevo como se indicó en el comentario de @Tony con respecto al error de tiempo de ejecución.

Microsoft (y Oracle y otros proveedores externos) restringen la distribución de su software según la ENU / EULA. Por lo tanto, esos módulos de software no se agregan en los flasks producidos por Maven para su distribución. Existen formas de evitarlo (como proporcionar la ubicación del archivo jar de terceros en tiempo de ejecución), pero como desarrollador debe tener cuidado con la violación de las licencias.

Un mejor enfoque para los conectores / controladores jdbc es usar jTDS , que es compatible con la mayoría de los DBMS, más confiable, más rápido (según los puntos de referencia) y distribuido bajo licencia GNU. Hará su vida mucho más fácil de usar esto que tratar de golpear la clavija cuadrada en el agujero redondo siguiendo cualquiera de las otras técnicas anteriores.

También puede crear un repository de proyecto. Es útil si hay más desarrolladores trabajando en el mismo proyecto, y la biblioteca debe estar incluida en el proyecto.

  • Primero, cree una estructura de repository en el directorio lib de su proyecto y luego cópiela en ella. La biblioteca debe tener el siguiente formato de nombre: -.jar

    /lib/com/microsoft/sqlserver///

  • Cree un archivo pom junto al archivo de la biblioteca y agregue la siguiente información en él:

       4.2.0 com.microsoft.sqlserver sqljdbc4 4.2  
  • En este punto, debes tener esta estructura de directorio:

    /lib/com/microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.jar /lib/com/microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.pom

  • Ve al archivo pom de tu proyecto y agrega un nuevo repository:

       Project repository file://${basedir}/lib   
  • Finalmente, agregue una dependencia en la biblioteca:

       com.microsoft.sqlserver sqljdbc4 4.2   

Actualización 4.3.2017

Parece que la biblioteca se puede obtener de un repository disponible públicamente. @ver las respuestas de Nirmal y Jacek Grzelaczyk para más detalles.

solo agrega

   com.microsoft.sqlserver sqljdbc4 4.0 runtime  

No es muy difícil. No he leído la licencia todavía. Sin embargo, he demostrado que esto funciona. Puede copiar el archivo jar sqljdbc4 a un recurso compartido de red o local. Tu build.gradle debería verse así:

 apply plugin: 'java' //apply plugin: 'maven' //apply plugin: 'enhance' sourceCompatibility = 1.8 version = '1.0' //library versions def hibernateVersion='4.3.10.Final' def microsoftSQLServerJDBCLibVersion='4.0' def springVersion='2.5.6' def log4jVersion='1.2.16' def jbossejbapiVersion='3.0.0.GA' repositories { mavenCentral() maven{url "file://Sharedir/releases"} } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' compile "org.hibernate:hibernate-core:$hibernateVersion" compile "com.microsoft.sqlserver:sqljdbc4:$microsoftSQLServerJDBCLibVersion" } task showMeCache << { configurations.compile.each { println it } } 

en el directorio sharedir / releases, tengo un directorio similar a la estructura maven que es \ sharedir \ releases \ com \ microsoft \ sqlserver \ sqljdbc4 \ 4.0 \ sqljdbc4-4.0.jar

buena suerte.

David Yen

Para el proyecto autocontenido de Maven, suelo instalar todas las dependencias de jar externas en el repository del proyecto. Para el controlador JDBC de SQL Server puede hacer:

  • descargue el controlador JDBC de https://www.microsoft.com/en-us/download/confirmation.aspx?id=11774
  • crea una carpeta local-repo en tu proyecto Maven
  • copia temporal sqljdbc42.jar en local-repo carpeta local-repo
  • en local-repo carpeta local-repo ejecute mvn deploy:deploy-file -Dfile=sqljdbc42.jar -DartifactId=sqljdbc42 -DgroupId=com.microsoft.sqlserver -DgeneratePom=true -Dpackaging=jar -Dversion=6.0.7507.100 -Durl=file://. para implementar JAR en el repository local (almacenado junto con su código en SCM)
  • sqljdbc42.jar y los archivos descargados se pueden eliminar
  • modifique su pom.xml y añada una referencia al repository local del proyecto: xml parent-local-repository Parent Local repository default file://${basedir}/local-repo true true Ahora puede ejecutar su proyecto en cualquier lugar sin configuraciones ni instalaciones adicionales.

Puede usar otro controlador

  net.sourceforge.jtds jtds 1.3.1  

y en xml

       

Si tiene algún problema al incluir la dependencia de 6.1.0.jre7 de @nirmals, responda en https://stackoverflow.com/a/41149866/1570834 , en su pom con commons-codec / azure-keyvault prefiero ir con esto :

   com.microsoft.sqlserver mssql-jdbc 6.2.2.jre7