내 POM.xml 파일에 MS SQL 드라이버 종속성을 추가하려고하는데 다음은 종속성입니다.
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
하지만이 예외가 발생합니다
누락 된 이슈 com.microsoft.sqlserver : sqljdbc4 : jar : 4.0
나는 정말로 문제를 이해하지 못한다.
답변
최신 정보
Microsoft는 이제 Maven Central에서이 아티팩트를 제공합니다. 자세한 내용은 @nirmal의 답변을 참조하십시오 : https://stackoverflow.com/a/41149866/1570834
원래 답변
문제는 Maven이 구성된 Maven 리포지토리 에서이 아티팩트를 찾을 수 없다는 것 입니다.
안타깝게도 Microsoft는 Maven 저장소를 통해이 아티팩트를 제공하지 않습니다. Microsoft 웹 사이트 에서 jar를 다운로드 한 다음 로컬 Maven 저장소에 수동으로 설치해야합니다.
다음 maven 명령으로이를 수행 할 수 있습니다.
mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar
그런 다음 다음에 POM에서 maven을 실행하면 아티팩트를 찾을 수 있습니다.
답변
마이크로 소프트는 최근에 그들의 jdbc 드라이버를 오픈 소스했다 .
이제 maven central에서 드라이버를 찾을 수 있습니다.
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre8</version>
</dependency>
또는 Java 7의 경우 :
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre7</version>
</dependency>
답변
비슷한 문제가 있었고 다음을 수행하여 해결했습니다.
- Microsoft 웹 사이트에서 로컬 컴퓨터로 sqljdbc4.jar을 다운로드합니다.
- Project-> Import-> Maven-> 아래 그림과 같이 Maven 저장소에 아티팩트를 설치하거나 배포합니다.
* 다음->
Artifact file:
다운로드 한 jar 의 다음 세부 경로를 입력합니다 (예 : 내 경우에는 E : \ lib \ sqljdbc4.jar)
Group Id:
com.microsoft.sqlserver
Artifact Id:
sqljdbc4
Version:
4.0
- 그런 다음 프로젝트를 새로 고치거나 정리하십시오.
감사합니다!
답변
위의 대답은 로컬 저장소에 sqljdbc4.jar 만 추가 합니다. 결과적으로 배포 용 최종 프로젝트 jar를 만들 때 런타임 오류에 대한 @Tony의 주석에 표시된대로 sqljdbc4가 다시 누락됩니다.
Microsoft (및 Oracle 및 기타 제 3 자 제공 업체)는 ENU / EULA에 따라 소프트웨어 배포를 제한합니다. 따라서 해당 소프트웨어 모듈은 배포를 위해 Maven에서 생성 한 jar에 추가되지 않습니다. 이를 우회 할 수있는 해킹이 있지만 (예 : 런타임에 타사 jar 파일의 위치를 제공하는 등) 개발자로서 라이선스 위반에주의해야합니다.
jdbc 커넥터 / 드라이버에 대한 더 나은 접근 방식은 jTDS 를 사용 하는 것입니다.이 jTDS 는 대부분의 DBMS와 호환되며 더 안정적이고 빠르며 (벤치 마크에 따라) GNU 라이선스에 따라 배포됩니다. 위의 다른 기술 중 하나에 따라 둥근 구멍에 사각형 말뚝을 두드리는 것보다 이것을 사용하는 것이 훨씬 더 쉽습니다.
답변
프로젝트 저장소를 만들 수도 있습니다. 더 많은 개발자가 동일한 프로젝트에서 작업하고 라이브러리가 프로젝트에 포함되어야하는 경우 유용합니다.
-
먼저 프로젝트의 lib 디렉토리에 리포지토리 구조를 만든 다음 라이브러리를 여기에 복사합니다. 라이브러리는 다음 이름 형식이어야합니다.
<artifactId>-<version>.jar
<your_project_dir>/lib/com/microsoft/sqlserver/<artifactId>/<version>/
-
라이브러리 파일 옆에 pom 파일을 만들고 다음 정보를 넣습니다.
<?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.2.0</modelVersion> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.2</version> </project>
-
이 시점에서 다음과 같은 디렉토리 구조가 있어야합니다.
<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
-
프로젝트의 pom 파일로 이동하여 새 저장소를 추가합니다.
<repositories> <repository> <id>Project repository</id> <url>file://${basedir}/lib</url> </repository> </repositories>
-
마지막으로 라이브러리에 대한 종속성을 추가하십시오.
<dependencies> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.2</version> </dependency> </dependencies>
4.3.2017 업데이트
공개적으로 사용 가능한 저장소에서 라이브러리를 얻을 수있는 것 같습니다. 자세한 내용은 @see nirmal ‘s 및 Jacek Grzelaczyk의 답변을 참조하십시오.
답변
그냥 추가
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<scope>runtime</scope>
</dependency>
답변
https://stackoverflow.com/a/41149866/1570834의 @nirmals 답변에서 6.1.0.jre7에 대한 종속성을 포함 할 때 몇 가지 문제가있는 경우 commons-codec / azure-keyvault가있는 pom에서이 작업을 선호합니다. :
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.2.2.jre7</version>
</dependency>