我试图在我的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
我真的不明白这个问题。
我试图在我的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
我真的不明白这个问题。
Answers:
更新
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时,它将找到工件。
-Dfile=C:\Users\anthony\Downloads\sqljdbc4.jar。
微软最近开源了他们的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>
我有类似的问题,并通过执行以下操作解决了。
*下一步->填写
Artifact file:
您下载的jar 的以下详细路径(例如:在我的情况下为E:\ lib \ sqljdbc4.jar)
Group Id:com.microsoft.sqlserver
Artifact Id:sqljdbc4
Version:4.0

上面的答案仅将sqljdbc4.jar添加到本地存储库。结果,当创建最终的项目jar进行分发时,将再次缺少sqljdbc4,如@Tony在有关运行时错误的注释中所指出的。
Microsoft(以及Oracle和其他第三方提供商)根据ENU / EULA限制其软件的分发。因此,不会将这些软件模块添加到Maven生产的jar中进行分发。有一些解决方法(例如在运行时提供3rd party jar文件的位置),但是作为开发人员,您必须小心违反许可。
对于jdbc连接器/驱动程序,更好的方法是使用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
图书馆似乎可以从公共资源库中获得。有关更多详细信息,请参见nirmal和Jacek Grzelaczyk的答案。
如果您在从@nirmals包含对6.1.0.jre7的依赖项时遇到问题,请访问https://stackoverflow.com/a/41149866/1570834,在您的pom中使用commons-codec / azure-keyvault,我更喜欢这样做:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.2.2.jre7</version>
</dependency>
不太难。我还没有阅读许可证。但是我已经证明了这种方法。您可以将sqljdbc4 jar文件复制到网络共享或本地目录。您的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 \ releases \ com \ microsoft \ sqlserver \ sqljdbc4 \ 4.0 \ sqljdbc4-4.0.jar
祝好运。
颜大卫
对于自包含的Maven项目,我通常将所有外部jar依赖项安装到项目的存储库中。对于SQL Server JDBC驱动程序,您可以执行以下操作:
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>
现在,您可以在任何地方运行您的项目,而无需任何其他配置或安装。您可以使用其他驱动程序
<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>
[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]