Отсутствует артефакт com.microsoft.sqlserver: sqljdbc4: jar: 4.0
Я пытаюсь добавить зависимость драйвера MS SQL в моем файле POM.xml, и следующая зависимость.
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
но я получаю это исключение
Отсутствует артефакт com.microsoft.sqlserver: sqljdbc4: jar: 4.0
Я действительно не понимаю эту проблему.
Ответы
Ответ 1
ОБНОВИТЬ
Microsoft теперь предоставляет этот артефакт в центральном центре maven. См. Ответ @nirmal для получения дополнительной информации: fooobar.com/questions/51600/...
ОРИГИНАЛЬНЫЙ ОТВЕТ
Проблема в том, что Maven не может найти этот артефакт в любом из сконфигурированных хранилищ maven.
К сожалению, Microsoft не делает этот артефакт доступным через любой репозиторий maven. Вам необходимо загрузить банку с веб-сайта Microsoft, а затем вручную установить ее в локальный репозиторий maven.
Вы можете сделать это со следующей командой maven:
mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar
Затем в следующий раз, когда вы запустите maven на своем POM, он найдет артефакт.
Ответ 2
Недавно Microsoft открыл исходный драйвер jdbc.
Теперь вы можете найти драйвер на центральной станции maven:
<!-- 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>
Ответ 3
У меня была аналогичная проблема, и я решил ее выполнить.
- Загрузите файл sqljdbc4.jar с веб-сайта Microsoft на ваш локальный компьютер.
- Щелкните правой кнопкой мыши Project → Import → Maven → Установите или разверните артефакт в репозиторий Maven, как показано ниже.
* Далее → Заполните следующие реквизиты
Artifact file:
путь загруженной банки (пример: E:\lib\sqljdbc4.jar в моем случае)
Group Id:
com.microsoft.sqlserver
Artifact Id:
sqljdbc4
Version:
4.0
![введите описание изображения здесь]()
- Затем обновите/очистите проект.
Спасибо!
Ответ 4
В приведенном выше ответе добавляется sqljdbc4.jar в репозиторий локальный. В результате при создании финальной панели проекта для распространения, sqljdbc4 снова будет отсутствовать, как указано в комментарии @Tony относительно ошибки времени выполнения.
Microsoft (и Oracle и другие сторонние поставщики) ограничивают распространение своего программного обеспечения в соответствии с ENU/EULA. Поэтому эти программные модули не добавляются в выпущенные банки Maven для распространения. Есть хаки, чтобы обойти его (например, предоставить местоположение стороннего файла jar во время выполнения), но как разработчик вы должны быть осторожны в нарушении лицензирования.
Лучший подход для разъемов/драйверов jdbc заключается в использовании jTDS, который совместим с большинством СУБД, более надежным, быстрым (в соответствии с критериями) и распространяется по лицензии GNU. Это сделает вашу жизнь намного легче использовать, чем пытаться искривить квадратный штифт в круглое отверстие, следуя любым другим вышеприведенным методам.
Ответ 5
Вы также можете создать репозиторий проекта. Это полезно, если другие разработчики работают над одним и тем же проектом, и библиотека должна быть включена в проект.
-
Сначала создайте структуру репозитория в каталоге проекта 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 и Jacek Grzelaczyk отвечают за более подробную информацию.
Ответ 6
просто добавьте
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<scope>runtime</scope>
</dependency>
Ответ 7
Это не слишком сложно. Я еще не прочитал лицензию. Однако я доказал, что это работает. Вы можете скопировать файл jar файла sqljdbc4 в сетевой ресурс или локальный каталог. Ваш build.gradle должен выглядеть следующим образом:
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 }
}
в каталоге sharedir/releases, у меня есть каталог, похожий на структуру maven, которая является\sharedir\релизы\com\microsoft\sqlserver\sqljdbc4\4.0\sqljdbc4-4.0.jar
удачи.
Дэвид Йен
Ответ 8
Для самостоятельного проекта Maven я обычно устанавливаю все внешние зависимости jar в репозиторий проектов. Для драйвера SQL Server JDBC вы можете:
- скачать драйвер JDBC из https://www.microsoft.com/en-us/download/confirmation.aspx?id=11774
- создать папку
local-repo
в проекте Maven
- временная копия
sqljdbc42.jar
в папку local-repo
- в
local-repo
запустить папку mvn deploy:deploy-file -Dfile=sqljdbc42.jar -DartifactId=sqljdbc42 -DgroupId=com.microsoft.sqlserver -DgeneratePom=true -Dpackaging=jar -Dversion=6.0.7507.100 -Durl=file://.
для развертывания JAR в локальном репозитории (хранится вместе с вашим кодом в SCM)
-
sqljdbc42.jar
и загруженные файлы могут быть удалены
- измените ваш
pom.xml
и добавьте ссылку на локальный репозиторий проекта:
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>
Теперь вы можете запускать проект везде без каких-либо дополнительных конфигураций или установок.
Ответ 9
Вы можете использовать другой драйвер
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
и в xml
<bean id="idNameDb" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="url" value="jdbc:jtds:sqlserver://[ip]:1433;DatabaseName=[name]" />
<property name="username" value="user" />
<property name="password" value="password" />
</bean>
Ответ 10
Если у вас возникла какая-то проблема при включении зависимости для 6.1.0.jre7 из @nirmals, ответьте на fooobar.com/info/51600/..., в вашем помпе с commons-codec/azure-keyvault я предпочитаю идти с этим:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.2.2.jre7</version>
</dependency>