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 repositorios de Maven configurados .
Desafortunadamente, Microsoft no hace que este artefacto esté disponible a través de ningún repositorio maven. Debe descargar el archivo jar del sitio web de Microsoft y luego instalarlo manualmente en su repositorio local de maven.
Puede 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 ejecute maven en su POM, encontrará el artefacto.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4 :install-file (default-cli) on project standalone-pom: The specified file 'C:\Us ers\anthony\sqljdbc4.jar' not exists -> [Help 1]
-Dfile=C:\Users\anthony\Downloads\sqljdbc4.jar
por ejemplo.Microsoft abrió recientemente su controlador jdbc .
Ahora puede encontrar el controlador en maven central:
o para java 7:
fuente
Tuve un problema similar y lo resolví haciendo lo siguiente.
* Siguiente -> Complete la siguiente
Artifact file:
ruta de detalles del jar que descargó (por ejemplo: E: \ lib \ sqljdbc4.jar en mi caso)Group Id:
com.microsoft.sqlserverArtifact Id:
sqljdbc4Version:
4.0¡Gracias!
fuente
La respuesta anterior solo agrega sqljdbc4.jar al repositorio local . Como resultado, al crear el jar del proyecto final para su distribución, sqljdbc4 volverá a faltar 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 frascos producidos por Maven para su distribución. Hay trucos para evitarlo (como proporcionar la ubicación del archivo jar de terceros en tiempo de ejecución), pero como desarrollador debe tener cuidado de no violar la licencia.
Un mejor enfoque para los conectores / controladores jdbc es usar jTDS , que es compatible con la mayoría de 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 usar esto que tratar de clavar la clavija cuadrada en el agujero redondo siguiendo cualquiera de las otras técnicas anteriores.
fuente
También puede crear un repositorio de proyectos. Es útil si más desarrolladores están trabajando en el mismo proyecto y la biblioteca debe estar incluida en el proyecto.
Primero, cree una estructura de repositorio en el directorio lib de su proyecto y luego copie la biblioteca en él. La biblioteca debe tener el siguiente formato de nombre:
<artifactId>-<version>.jar
<your_project_dir>/lib/com/microsoft/sqlserver/<artifactId>/<version>/
Cree un archivo pom junto al archivo de la biblioteca y coloque la siguiente información en él:
En este punto, debería tener esta estructura de directorio:
<your_project_dir>/lib/com/microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.jar
<your_project_dir>/lib/com/microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.pom
Vaya al archivo pom de su proyecto y agregue un nuevo repositorio:
Finalmente, agregue una dependencia en la biblioteca:
Actualización 4.3.2017
Parece que la biblioteca se puede obtener del repositorio disponible públicamente. @ver las respuestas de nirmal y Jacek Grzelaczyk para más detalles.
fuente
solo agrega
fuente
Si tiene algún problema al incluir la dependencia para 6.1.0.jre7 de la respuesta de @nirmals en https://stackoverflow.com/a/41149866/1570834 , en su pom con commons-codec / azure-keyvault prefiero ir con esto :
fuente
No es demasiado difícil. Aún no he leído la licencia. Sin embargo, he probado que esto funciona. Puede copiar el archivo jar sqljdbc4 a un recurso compartido de red o directorio local. Su build.gradle debería verse así:
bajo el directorio sharedir / releases, tengo un directorio similar a la estructura de maven que es \ sharedir \ releases \ com \ microsoft \ sqlserver \ sqljdbc4 \ 4.0 \ sqljdbc4-4.0.jar
buena suerte.
David Yen
fuente
Para el proyecto autónomo de Maven, generalmente instalo todas las dependencias de jar externas en el repositorio del proyecto. Para el controlador JDBC de SQL Server, puede hacer:
local-repo
en su proyecto Mavensqljdbc42.jar
enlocal-repo
carpetalocal-repo
carpeta ejecutarmvn 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 repositorio local (almacenado junto con su código en SCM)sqljdbc42.jar
y los archivos descargados se pueden eliminarpom.xml
y agregue una referencia al repositorio local del proyecto:xml <repositories> <repository> <id>parent-local-repository</id> <name>Parent Local repository</name> <layout>default</layout> <url>file://${basedir}/local-repo</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
ahora puede ejecutar su proyecto en cualquier lugar sin configuraciones o instalaciones adicionales.fuente
Puedes usar otro controlador
y en xml
fuente