缺less工件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> 

但我得到这个例外

缺less工件com.microsoft.sqlserver:sqljdbc4:jar:4.0

我真的不明白这个问题。

UPDATE

微软现在在Maven中心提供这个工件。 有关更多详细信息,请参阅@ nirmal的答案: https ://stackoverflow.com/a/41149866/1570834


原来的答案

问题是Maven在任何configuration的maven仓库中都找不到这个工件。

不幸的是,微软并没有通过任何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就会发现这个神器。

我有类似的问题,并通过做下面的解决。

  • 从Microsoft网站下载sqljdbc4.jar到本地机器。
  • 右键单击项目 – >导入 – > Maven – >安装或部署工件到Maven仓库,如下所示。

在这里输入图像说明

*下一步 – >填写以下细节

Artifact file:你下载的jar的path(例如:E:\ lib \ sqljdbc4.jar)
Group Id: com.microsoft.sqlserver
Artifact Id: sqljdbc4
Version: 4.0

在这里输入图像说明

  • 然后刷新/清理项目。

    谢谢!

微软最近开源了他们的jdbc驱动程序 。

你现在可以在Maven中心find驱动程序:

 <!-- 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> 

上面的答案只是将sqljdbc4.jar添加到本地存储库。 因此,当创build最终的项目jar分发时,sqljdbc4将再次缺less@Tony关于运行时错误的评论。

微软(和甲骨文以及其他第三方提供商)按照ENU / EULA限制软件的分发。 因此这些软件模块不会被添加到Maven生产的jar包中进行分发。 有窍门(例如在运行时提供第三方jar文件的位置),但作为开发人员,您必须小心违反许可。

jdbc连接器/驱动程序的一个更好的方法是使用与大多数DBMS兼容的jTDS ,更可靠,更快(按照基准testing),并在GNU许可证下分发。 这将使你的生活更容易使用这个比尝试按照上面的任何其他技术打方孔钉入圆孔。

您也可以创build一个项目存储库。 如果有更多的开发人员在同一个项目上工作,并且该库必须包含在项目中,这将会非常有用。

  • 首先,在您的项目的lib目录中创build一个存储库结构,然后将该库复制到其中。 该库必须具有以下名称格式: <artifactId>-<version>.jar

    <your_project_dir>/lib/com/microsoft/sqlserver/<artifactId>/<version>/

  • 在库文件旁边创buildpom文件,并在其中input以下信息:

     <?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的答案更多的细节。

只需添加

  <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> <scope>runtime</scope> </dependency> 

这并不难。 我还没有阅读许可证。 不过,我已经certificate这个作品。 您可以将sqljdbc4 jar文件复制到networking共享或本地目录。 你的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结构的目录,它是\ shared \ release \ com \ microsoft \ sqlserver \ sqljdbc4 \ 4.0 \ sqljdbc4-4.0.jar

祝你好运。

大卫·严

对于自包含的Maven项目,我通常将所有外部jar依赖项安装到项目的存储库中。 对于SQL Server JDBC驱动程序,您可以执行:

  • https://www.microsoft.com/zh-CN/download/confirmation.aspx?id=11774下载JDBC驱动程序;
  • 在Maven项目中创build文件夹local-repo
  • 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>现在,您可以在任何地方运行项目,而无需任何其他configuration或安装。

您可以使用其他驱动程序

 <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>